2016-11-16 34 views
0

我在MySQL中有两个表,其中一个在每行中包含一个值,另一个包含相同的值,但它们全部组合成一行。因此,例如:MYSQL Group_Concat值到一个字段,但保持多行

表1:

Column1 
a 
b 

表2:

Column1 
a,b 

我想提出一个基于映射表关闭表1,这样我可以做他们加入。我要寻找的结果会是这样的:

Column1 | Column2 
a  | a,b 
b  | a,b 

我已经试过这样:

SELECT Column1, GROUP_CONCAT(DISTINCT Column1) AS Column2 
FROM Table1 

,但它只是返回单行:

Column1 | Column2 
a  | a,b 

我也试图加入group by clause:

SELECT Column1, GROUP_CONCAT(DISTINCT Column1) AS Column2 
FROM Table1 
GROUP BY Column1 

This返回每一行,但不将字段连接到第2列:

Column1 | Column2 
a  | a 
b  | b 

有什么办法可以解决这个问题吗?我感谢帮助!

回答

1

您需要将表连接到返回连接值的子查询。

SELECT t1.Column1, g.c 
FROM Table1 AS t1 
CROSS JOIN (
    SELECT GROUP_CONCAT(Column1) AS c 
    FROM Table1) AS g 
+0

这个伎俩!我曾尝试过子查询,但我并不知道CROSS JOIN。谢谢! – Jason247

相关问题