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
以用户ID分组,把goods_price字段的值在同一行打印出来,逗号分隔(默认)
SELECT GROUP_CONCAT(goods_price),goods_user_id FROM goods GROUP BY goods_user_id
以用户ID分组,把goods_price字段的值在同一行打印出来,中间为下划线(_)分隔
SELECT GROUP_CONCAT(goods_price SEPARATOR '_'),goods_user_id FROM goods GROUP BY goods_user_id
以用户ID分组,将goods_price字段去重,(这里没写分隔符默认为“,”)同行打印出来
SELECT GROUP_CONCAT(DISTINCT goods_price),goods_user_id FROM goods GROUP BY goods_user_id
以用户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