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

Posted 小道仙97

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySql关键字GROUP_CONCAT,组合连接查询相关的知识,希望对你有一定的参考价值。

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

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

学生表(stu)

id name
1 张三
2 李四
3 王五

分数表(course)

id name stu_id score
1 语文 1 80
2 数学 1 90
3 英语 1 75
4 语文 2 55
5 数学 2 45
6 英语 3 90

但是前段时间朋友推荐了一个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


以上是关于MySql关键字GROUP_CONCAT,组合连接查询的主要内容,如果未能解决你的问题,请参考以下文章

Mysql GROUP_CONCAT 使用注意事项

如何在Mysql中组合两列和group_concat

Mysql中使用Group_Concat将列组合进来。

关于如何在vertica上使用MySQL的group_concat()函数

MySQL 截断 GROUP_CONCAT 函数的连接结果

向 mySQL GROUP_CONCAT 语句添加内连接