一、前言
MySQL是一款非常流行的数据库软件,我们在实际开发中经常会用到MySQL。有时候我们需要将多条数据合并成一条,一般情况下我们可以使用GROUP_CONCAT函数来实现。本文就将详细讲解如何使用GROUP_CONCAT函数将多条数据合并成一条。
二、GROUP_CONCAT函数介绍
GROUP_CONCAT函数是MySQL中的一个聚合函数,其作用是将某一字段的多个不同的值合并为一个字符串。其语法如下:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
参数说明:
- DISTINCT:可选参数,是否去重。
- expr:需要合并的字段名。
- ORDER BY:可选参数,按照指定的排序规则进行合并。
- SEPARATOR:可选参数,合并后的分隔符。
三、实例说明
1.将多条数据合并成一条
假设我们有以下的student_score表:
+----+---------+-------+
| id | student | score |
+----+---------+-------+
| 1 | 张三 | 90 |
| 2 | 张三 | 95 |
| 3 | 李四 | 80 |
| 4 | 李四 | 85 |
+----+---------+-------+
我们需要将其按照学生名字进行合并,得到以下结果:
+---------+-------------+
| student | score_list |
+---------+-------------+
| 张三 | 90,95 |
| 李四 | 80,85 |
+---------+-------------+
查询语句如下:
SELECT student,GROUP_CONCAT(score SEPARATOR ',') AS score_list FROM student_score GROUP BY student;
2.将多条数据合并成多个字段的值
假设我们有以下的student_subject_score表:
+----+---------+----------+-------+
| id | student | subject | score |
+----+---------+----------+-------+
| 1 | 张三 | 数学 | 90 |
| 2 | 张三 | 语文 | 95 |
| 3 | 李四 | 数学 | 80 |
| 4 | 李四 | 语文 | 85 |
+----+---------+----------+-------+
我们需要将其按照学生名字进行合并,得到以下结果:
+---------+-------------+-------------+
| student | math_score | chinese_score |
+---------+-------------+-------------+
| 张三 | 90 | 95 |
| 李四 | 80 | 85 |
+---------+-------------+-------------+
查询语句如下:
SELECT
student,
MAX(CASE subject WHEN '数学' THEN score ELSE NULL END) AS math_score,
MAX(CASE subject WHEN '语文' THEN score ELSE NULL END) AS chinese_score
FROM
student_subject_score
GROUP BY student;
四、总结
本文详细介绍了MySQL中如何使用GROUP_CONCAT函数将多条数据合并成一条。通过本文的学习,我们可以更好的使用MySQL中的聚合函数来完成我们的需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL将多条数据合并成一条的完整示例 - Python技术站