首页 > 解决方案 > 在mysql中将多行合并在一列中?当具有不同值的相同 ID 时

问题描述

我有一个查询,其中获取 2 条相同 id 但不同组(列)值的记录。这是查询:

SELECT rule.id, rule.rule_name,group_rule.groupName
  FROM rule LEFT JOIN rule_groups ON rule.id=rule_groups.rule_id
  LEFT JOIN group_rule ON   rule_groups.group_rule_id=group_rule.id

结果: - - - - - - - - - - - - - - - - -

|id     |rule_name   | groupName
|1      |A           | app
|1      |A           |jaz

现在想将这两行合并到一条记录中。如何修改查询以获得预期结果。

预期的:

|id     |rule_name   | groupName
|1      |A           | app, jaz




 

标签: mysqlsql

解决方案


我想你只是想要group_concat()

select r.id, r.rule_name, group_concat(gr.groupName separator ', ')
from rule r left join
     rule_groups rg
     on r.id = rg.rule_id left join
     group_rule gr
     on rg.group_rule_id = gr.id
group by r.id, r.rule_name;

请注意,我还引入了表别名,因此查询更易于编写和阅读。


推荐阅读