1.语法介绍

GROUP_CONCAT(xxx):是将分组中括号里对应的字符串进行连接.如果分组里括号里的参数有xxx有多行,那么就会将这么多行的字符串连接,每个字符串之间会有特定的符号进行分隔。

2.函数语法

group_concat( [DISTINCT] column1 [Order BY column2  ASC/DESC] [Separator ‘分隔符’] )
  • 将分组中column1这一列对应的多行的值按照column2 升序或者降序进行连接,其中分隔符为seq
  • 如果用到了DISTINCT,将表示将不重复的column1按照column2升序或者降序连接
  • 如果没有指定SEPARATOR的话,也就是说没有写,那么就会默认以 ','分隔

3.举例

查询商品表中的价格和用户ID

SELECT goods_price, goods_user_id FROM goods

mysql之group_concat函数_sql函数

以用户ID分组,把goods_price字段的值在同一行打印出来,逗号分隔(默认)

SELECT GROUP_CONCAT(goods_price),goods_user_id FROM goods GROUP BY goods_user_id

mysql之group_concat函数_sql函数_02

以用户ID分组,把goods_price字段的值在同一行打印出来,中间为下划线(_)分隔

SELECT GROUP_CONCAT(goods_price SEPARATOR '_'),goods_user_id FROM goods GROUP BY goods_user_id

mysql之group_concat函数_sql函数_03

以用户ID分组,将goods_price字段去重,(这里没写分隔符默认为“,”)同行打印出来

SELECT GROUP_CONCAT(DISTINCT goods_price),goods_user_id FROM goods GROUP BY goods_user_id

mysql之group_concat函数_sql函数_04

以用户ID分组,将goods_price去重,按goods_price降序排序,(未设置分隔符默认“,”)同行打印出来

SELECT GROUP_CONCAT(DISTINCT goods_price ORDER BY goods_price DESC),goods_user_id FROM goods GROUP BY goods_user_id

mysql之group_concat函数_group_concat_05