MySQL如何对两张关联表使用GROUP_CONCAT实现字段值合并输出
MySQL分组拼接查询解决方案
你需要先修正JOIN关联的字段错误(servers表存储标识的字段是id而非names),再搭配MySQL提供的GROUP_CONCAT聚合函数,配合分组逻辑即可实现目标效果。
最终SQL语句
SELECT users.name, GROUP_CONCAT(servers.name SEPARATOR ', ') AS server_list FROM users INNER JOIN servers ON users.names = servers.id GROUP BY users.name;
实现逻辑说明
- 修正关联条件:把原来的
ON users.names = servers.names改为ON users.names = servers.id,和你的表结构对应,正确关联用户和对应的服务器记录,得到你现在已经查询到的4行明细结果 - 分组:通过
GROUP BY users.name将同一个用户的所有行合并为一个分组 - 拼接:使用
GROUP_CONCAT函数,把每个分组内的多个服务器名称,用,作为分隔符拼接成单个字符串,最终得到每行一个用户、对应所有服务器合并展示的效果
可选扩展
如果需要调整拼接顺序,可以在GROUP_CONCAT中增加排序规则,示例如下:
-- 按服务器ID倒序拼接名称 GROUP_CONCAT(servers.name ORDER BY servers.id DESC SEPARATOR ', ')
如果需要修改分隔符,直接替换SEPARATOR后的内容即可。
内容的提问来源于stack exchange,提问作者user5345434543
相关产品推荐
相关产品推荐

