MySql关键字GROUP_CONCAT,组合连接查询

一、

试着想一下如果有这样一个需求应该怎么去做:
有一张学生表,和一张分数表。要查出每个学生姓名和分数,分数以逗号隔开
eg:张三 80,90,100

这个需求很简单,有很多种办法来解决,最简单的是我们可以先查询学生,然后再去查询分数,最后由程序代码组装。

学生表(stu)

idname
1张三
2李四
3王五

分数表(course)

idnamestu_idscore
1语文180
2数学190
3英语175
4语文255
5数学245
6英语390

二、

但是前段时间朋友推荐了一个MySql关键字group_concat,使用这个关键字就很简单了。

SELECT
	s.name name,
	GROUP_CONCAT(c.score) score
FROM
stu s 
LEFT JOIN course c ON s.id = c.stu_id
GROUP BY s.id

在这里插入图片描述


三、

如果我们要查询科目名、分数,并且以分号分割应该怎么写呢?

SELECT
	s.name name,
	GROUP_CONCAT(c.name, ':',c.score  separator '; ') score
FROM
stu s 
LEFT JOIN course c ON s.id = c.stu_id
GROUP BY s.id

在这里插入图片描述

在group_concat里面的字段,不能有为null,不然就会整体为null

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值