mysql - 在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
解决方案
我想你只是想要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;
请注意,我还引入了表别名,因此查询更易于编写和阅读。
推荐阅读
- python - 在两个数组中查找重复值,Python
- java - 从 GitLab-CI 中的 docker 容器中提取测试覆盖率
- datastage - 在指定时间中止 Datastage 作业
- google-cloud-platform - 我被授予存储权限的服务帐户没有 storage.objects.list 访问 Google Cloud Storage 存储桶的权限
- swift - 如何使用 SwiftUI 中的按钮从数组中删除项目?
- javascript - 当表单发送的值与下拉列表中出现的值不同时,获取选择下拉列表的值
- python-3.x - json到python中规范请求的url编码
- jekyll - GitHub 页面中的 Rouge 语法高亮显示
- flutter - Flutter 应用中的 HMS 和 GMS - 同名不同实现的类
- azure - 使用多租户应用程序的 sas 令牌跨容器同步时出现 Azure“azcopy 同步”问题