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。。。