2016-11-09 83 views
0

我有2个表所示:
表一:GROUP_CONCAT DISTINCT BY ID

ID type 
1 1 
1 1 
2 1 

2 2 
2 2 
3 2 

表B:

ID name 
1 a 
2 b 
3 b 

和预期的结果:

ID type name 
1,2 1 a,b 
2,3 2 b,b 

我试图:

SELECT GROUP_CONCAT(DISTINCT ID), a.type, 
GROUP_CONCAT(SELECT name FROM b WHERE ID = a.ID) 
FROM a GROUP BY a.type 

但它不工作。我需要名称是GROUP_CONCAT和DISTINCT ID。

回答

0

我已经找到了我的问题的解决方案:

SELECT GROUP_CONCAT(DISTINCT a.id), a.type, 
(SELECT GROUP_CONCAT(name) FROM b 
WHERE FIND_IN_SET(ID, GROUP_CONCAT(a.ID))) 
FROM a GROUP BY a.type 
0

试试这个:

SELECT GROUP_CONCAT(DISTINCT a.id), a.type, GROUP_CONCAT(DISTINCT b.name) 
FROM a 
LEFT JOIN b ON a.id = b.id 
GROUP BY a.type 
+0

它将返回:ID((1,2),(2,3)),类型((1),(2)),名称((a,b),(b)) –

+0

问题是,您需要'b,b' for type = 2?那里的意义究竟是什么?你在这个专栏分组了什么? – Dekel

+0

是的,我需要完全b,b类型= 2.这只是我的问题的一个例子。我找到了一个解决方案: SELECT GROUP_CONCAT(DISTINCT a.id),a.type,(SELECT GROUP_CONCAT(name)FROM b WHERE FIND_IN_SET(ID,GROUP_CONCAT(a.ID)))FROM GROUP BY a.type –