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