mysql GROUP_CONCAT
http://www.forasp.cn/ 2023/3/28 14:04:42 点击:不统计
在mysql 查询中经常用到group by分组,当数据分组后,没有分组的数据想全部获取并输出,那就用到了GROUP_CONCAT
在mysql中 GROUP_CONCAT ,是指 将没有分组的字段,进行连接作为一个新的字段来使用
比如 有表:student_score 如下:
+------+--------+------------+-------+
| id | name | class_name | score |
+------+--------+------------+-------+
| 1 | 张三 | 数学 | 70 |
| 2 | 李四 | 语文 | 81 |
| 3 | 王武 | 数学 | 98 |
| 4 | 张三 | 语文 | 56 |
+------+--------+------------+-------+
比如 查询每个人都参与了什么考试,那sql语句如下
mysql >. select name,GROUP_CONCAT(class_name SEPARATOR "-") as ’考试名称‘ from student_score group by name;
GROUP_CONCAT结果为:
+--------+---------------+
| name | 考试名称 |
+--------+---------------+
| 张三 | 数学-语文 |
| 李四 | 语文 |
| 王武 | 数学 |
+--------+---------------+
上面就是按照 名称分组,将考试的class_name 进行数据连接,作为新字段“考试名称”输出。
如果按照考试名称排序,那么GROUP_CONCAT 可以增加排序条件
mysql >. select name,GROUP_CONCAT(class_name order by class_name desc SEPARATOR "-") as ’考试名称‘ from student_score group by name;
GROUP_CONCAT结果为:
+--------+---------------+
| name | 考试名称 |
+--------+---------------+
| 张三 | 语文-数学 |
| 李四 | 语文 |
| 王武 | 数学 |
+--------+---------------+
中间的分隔符 “-” 可以根据SEPARATOR 后面进行自定义。
如果即向看到考试科目,又要有考试分数,GROUP_CONCAT 增加多字段,如下
mysql >select name,GROUP_CONCAT(class_name,score order by class_name desc SEPARATOR "-") as "考试名称" from student_score group by name;
+--------+-------------------+
| name | 考试名称 |
+--------+-------------------+
| 张三 | 语文56-数学70 |
| 李四 | 语文81 |
| 王武 | 数学98 |
+--------+-------------------+
如果即向看到考试科目,又要有考试分数,又要有分隔符,GROUP_CONCAT 增加多字段,如下
select name,GROUP_CONCAT(class_name,":",score order by class_name desc SEPARATOR "-") as "考试名称" from stuedent_score group by name;
输出结果:
+--------+---------------------+
| name | 考试名称 |
+--------+---------------------+
| 张三 | 语文:56-数学:70 |
| 李四 | 语文:81 |
| 王武 | 数学:98 |
+--------+---------------------+ 在 GROUP_CONCAT 查询中如果遇到了空内容,需要给出默认值,则
GROUP_CONCAT(class_name,score order by class_name desc SEPARATOR "-", COALESCE(字段名,默认值))
以上就是 GROUP_CONCAT的使用
如果 出现 Row x was cut by GROUP_CONCAT 表示配置限制了连接长度,
·上一篇:mysql distinct group by 区别 >> ·下一篇:mysql 优化 >>