GROUP_CONCAT()
用于将分组中括号里对应的字符串进行连接.如果分组中括号里的参数xxx有多行,那么就会将这多行的字符串连接,每个字符串之间会有特定的符号进行分隔。
语法:
GROUP_CONCAT([DISTINCT] 要连接的字段 [ORDER BY 排序字段 ASC/DESC] [SEPARATOR ‘分隔符’])
字段说明:
- 使用DISTINCT可以排除重复值
- 如果需要对结果中的值进行排序,可以使用ORDER BY子句
- SEPARATOR '分隔符’是一个字符串值,默认为逗号
例子:
表user:
name | age |
---|---|
张三 | 15 |
李四 | 17 |
王五 | 15 |
张三 | 17 |
张三 | 17 |
不加关键词
select GROUP_CONCAT(name) as name from user GROUP BY name ;
name | |
---|---|
张三 ,张三,张三 | |
李四 | |
王五 |
使用DISTINCT排除重复值
select GROUP_CONCAT(DISTINCT name) as name from user GROUP BY name ;
name | |
---|---|
张三 | |
李四 | |
王五 |
去除重复并进行倒序排序
select name, GROUP_CONCAT(DISTINCT age ORDER BY age desc) as age from user GROUP BY name ;
name | age |
---|---|
张三 | 17,15 |
李四 | 17 |
王五 | 15 |
去除重复倒序排序并使用加号进行分割
select name, GROUP_CONCAT(DISTINCT age ORDER BY age desc) as age from user GROUP BY name ;
name | age |
---|---|
张三 | 17+15 |
李四 | 17 |
王五 | 15 |