数据库
首页 > 数据库> > mysql-SQL Group_concat无法获取所有数据

mysql-SQL Group_concat无法获取所有数据

作者:互联网

我有2张桌子和第二张桌子的使用关系

table1
id   name
---------
1    alpha
2    beta

table2
id   name  relation
-------------------
1    2015    2
2    2016    2
3    2017    2
4    2018    2

我想看看

name   data
-------------------------
beta   2015,2016,2017,2018
alpha  NULL

我尝试了以下SQL查询,但输出不是我想要的

我用:

SELECT 
    t1.name,
    GROUP_CONCAT(t2.name SEPARATOR ',')
FROM table1 AS t1
LEFT JOIN table2 AS t2
    ON t2.relation = t1.id

输出:

alpha 2015,2016,2017,2018

Alpha在其他相关的制表法中没有任何价值.输出中的值属于beta.

解决方法:

您需要GROUP BY:

SELECT t1.name,
       GROUP_CONCAT(t2.name SEPARATOR ',')
FROM table1 t1 LEFT JOIN
     table2 t2
     ON t2.relation = t1.id
GROUP BY t1.name;

在大多数数据库(和最新版本的MySQL)中,查询将失败.这是一个聚合查询(由于GROUP_CONCAT()).但是,t1.name不是聚合函数的参数,也不是GROUP BY键.

MySQL确实允许这种类型的查询.它仅返回一行.结果集中第一行的t1.name值来自任意行.

标签:group-concat,sql,mysql
来源: https://codeday.me/bug/20191110/2014612.html