MySQL中GROUP_CONCAT(expr)的使用

作用

一般与GROUP BY一起使用,将GROUP BY产生的同一个分组中的值连接起来,返回一个字符串结果。

简单用法示例:

students表:学生编号,学生姓名

s_id s_name
001 熊大
002 熊二
003 熊三
004 熊四

score表:课程编号,学生编号,成绩

c_id s_id s_score
01 001 91
01 002 92
01 003 93
01 004 94
02 001 81
02 003 83
02 004 81
03 001 71
03 002 82
03 004 84

查询和‘001’号学生所学课程完全一致的学生信息

-- 查询编号为‘001’的学生所学课程号
# 不使用group_concat()直接查询
mysql> select c_id from score where s_id='001';
+------+
| c_id |
+------+
| 01   |
| 02   |
| 03   |
+------+
# group_concat()可以将查询结果拼接为一个字符串
mysql> select group_concat(c_id) from score group by s_id having s_id='001';
+--------------------+
| group_concat(c_id) |
+--------------------+
| 01,02,03           |
+--------------------+
-- 查询和‘001’号学生所学课程完全一致的学生信息
mysql> select * from students s1 
       inner join score s2 on s1.s_id=s2.s_id 
       group by s1.s_id having group_concat(c_id)=(
       select group_concat(c_id) from score where s_id='01' group by s_id);
+------+--------+
| s_id | s_name | 
+------+--------+
| 01   | 熊大   |
| 02   | 熊四   |
+------+--------+

你可能感兴趣的:(MySQL中GROUP_CONCAT(expr)的使用)