Mysql SQL组\u concat无法获取所有数据
我有两个表和第二个表的使用关系Mysql SQL组\u concat无法获取所有数据,mysql,sql,group-concat,Mysql,Sql,Group Concat,我有两个表和第二个表的使用关系 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
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。fiddle没有FKs:
CREATE TABLE Table1 (`id` int, `name` varchar(5)) ;
INSERT INTO Table1
(`id`, `name`)
VALUES
(1, 'alpha'),
(2, 'beta')
;
CREATE TABLE Table2 (`id` int, `name` int, `relation` int);
INSERT INTO Table2
(`id`, `name`, `relation`)
VALUES
(1, 2015, 2),
(2, 2016, 2),
(3, 2017, 2),
(4, 2018, 2)
;
声明:
SELECT
t1.name,
GROUP_CONCAT(t2.name SEPARATOR ',') -- missing an AS .... => ugly name from fiddle
FROM table1 AS t1
LEFT JOIN table2 AS t2
ON t2.relation = t1.id
group by t1.name
输出:
name GROUP_CONCAT(t2.name SEPARATOR ',')
alpha (null)
beta 2017,2018,2015,2016
您需要
分组依据
:
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的最新版本)中,查询都会失败。这是一个聚合查询(因为组\u CONCAT()
)。但是,t1.name
不是聚合函数的参数,也不是groupby
键
MySQL确实允许这种类型的查询。它只返回一行。结果集中一行的t1.name
值来自任意一行。GROUP\u CONCAT。。。