当前位置: 首页 > 面试题库 >

如何将具有相同列值的mysql行分组为一行?

耿敏达
2023-03-14
问题内容

我有两个表,关键字和数据。

表关键字具有2列(id,关键字),表数据具有3列(id [keywords.id的外键,名称,值]。

我正在使用此查询:

SELECT k.id, d.value, d.name
FROM keywords AS k
INNER JOIN data as d ON k.id = d.id

它返回类似:

1 123 name1
1 456 name2
2 943 name1
3 542 name1
3 532 name2
3 682 name3

每个id的值可以为0到3(将来可能会更多)。

如何在同一行中检索具有相同ID的所有行?

喜欢

1 123 456
2 943
3 542 532 682

我想这样做是因为我希望能够对值进行排序。


问题答案:

GROUP_CONCAT()像这样使用:

 SELECT k.id, GROUP_CONCAT(d.value)
  FROM keywords AS k
  INNER JOIN data as d ON k.id = d.id
  GROUP BY k.id

另外,您可能需要根据需要ORDER BY d.name获取确切的值顺序。像这样:

 SELECT k.id, GROUP_CONCAT(d.value ORDER BY d.name separator ' ')
  FROM keywords AS k
  INNER JOIN data as d ON k.id = d.id
  GROUP BY k.id


 类似资料:
  • 问题内容: 让我们考虑下表- 我是一个SQL新手,但是如何返回同时包含ID 2和ID 4的分数?因此,由于ID 2和ID 4中均包含该字符,因此应该返回100 问题答案: 这是“组内集”查询的示例。我建议使用该子句进行聚合,因为这是最灵活的方法。 这是在按分数汇总。然后,子句()的第一部分是计算每个分数有多少个“ 2”。第二个是计算多少个“ 4”。仅返回分数为“ 2”和“ 4”的分数。

  • exTab 如何使用SQL(与mySQL一起)只返回col1中具有多个相同值、col2中具有多个相同值、但COL3中具有唯一值的行? 例如,在上面的表(exTab)中,val1在col1中出现了4次,对于这4次,val4在col2中出现了3次,但是对于这3次,val7在col3中只出现了一次,所以我想返回这一行(第1行)。考虑到这些条件,第1行将是我希望从此表返回的唯一一行。 我试过和group

  • 问题内容: 在[成员]表中,某些行的列值相同。 有些人使用了不同的login_id,但是使用了相同的电子邮件地址,因此在此列上未设置唯一约束。现在,我需要查找这些行,并查看是否应将其删除。 我应该使用什么SQL语句查找这些行?(MySQL 5) 问题答案: 此查询将为您提供电子邮件地址及其使用次数的列表,最常用的地址在前。 如果要完整行:

  • 问题内容: 我想用SQL对行进行分组,我的结果集如下 name size date data1 123 12/03/2009 data1 124 15/09/2009 data2 333 02/09/2010 data2 323 02/11/2010 2010 data2 673 2014/02/09 data2 444 05/01/2010 我想对结果集进行这样的分组: data1 123 12

  • 问题内容: 我正在尝试从SQLite表中提取数据,该表将键值对存储在双列中。例如,用钥匙,,,和,该表将如下所示: 我想执行一个查询,以行作为键,值作为行,每行都给我。像这样: 我唯一能想到的解决方案是每个键的联接: 有一个更好的方法吗? 问题答案: 另一个可用的选项是使用 条件聚合 :

  • 问题内容: 我的表是: 我想列出一组具有相同疾病的患者。pid和did分别是患者和疾病表中的主键,并且是has_disease表中的外键。 样本数据: 耐心 疾病 has_disease 以上数据的答案是因为它们具有完全相同的疾病1和3,即疟疾和病毒热。我想知道如何在mysql中实现这一点。 。 问题答案: 该查询返回给我们患者及其疾病。 通过完整的剂量列表比较2组患者,并将pid保留为相同的剂量