MySQL中GROUP_CONCAT(expr)的使用

作用

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

简单用法示例:

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

s_ids_name
001熊大
002熊二
003熊三
004熊四

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

c_ids_ids_score
0100191
0100292
0100393
0100494
0200181
0200383
0200481
0300171
0300282
0300484

查询和‘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   | 熊四   |
+------+--------+
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值