mysql多记录单字段合并

在开发中我们很多的时候都存在这样的问题。将表的几列合并到一行显示。 例如:

ID NAME CITY
1 张三 上海
2 李四 北京
3 王五 上海
4 赵六 广州

我们想查询每个城市有哪些人 显示方式如:

  • 上海 张三,王五
    北京 李四
    广州 赵六

group_concat 必须与 group by 一起使用
完整句法如下:

GROUP_CONCAT([DISTINCT] expr [,expr ...]  
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]  
[SEPARATOR str_val])

可以看到我们在group_concat 函数中可以使用distinct,order by等以前使用 而separator则是显示使用什么样的链接字符。 对于以上查询我们可以

select CITY, GROUP_CONCAT( `NAME` separator ','  ) from testtable group by CITY

如果里面出现张三有两条上海的记录我们连接只想查询这样的结果呢 我们可以使用distinct的函数 使用方法如下。

select name, GROUP_CONCAT( distinct  testtable.`NAME`  separator ','  ) from  testtable  group by  testtable.`CITY`  

如果我们想按城市排序呢,我们可以使用order by

select name, GROUP_CONCAT( distinct  testtable .`NAME` order by CITY separator ','  ) from  testtable  group by  testtable.`CITY` 

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦