2016-11-09 104 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 –