2012-10-08 96 views
5

我可能沒有大腦的時刻。MySQL GROUP_CONCAT多個字段

我想從我的數據庫中的兩個字段使用GROUP_CONCAT返回一系列數字。我已經這樣做了迄今使用下列內容:

SELECT t_id, 
CONCAT(GROUP_CONCAT(DISTINCT s_id),',',IFNULL(GROUP_CONCAT(DISTINCT i_id),'')) AS all_ids 
FROM mytable GROUP BY t_id 

這工作正常,但如果i_id爲NULL,則當然我得到一個不必要的逗號。有沒有更好的方法來做到這一點,所以如果i_id爲NULL,我最終不會以逗號結尾?

回答

13

您需要使用CONCAT_WS避免額外commaNULL值,試試這個:

SELECT t_id, 
     CONCAT_WS(',', GROUP_CONCAT(DISTINCT s_id), 
       GROUP_CONCAT(DISTINCT i_id)) AS all_ids 
FROM mytable 
GROUP BY t_id; 
+0

將取代任何雙逗號(,,)與一個單一的一個(,),但不是我的問題。如果i_id爲空,我最終得到的結果是2,6,8,當我需要的是2,6,8 –

+0

'CONCAT_WS'應該爲你工作。 – Omesh

+0

謝謝。這很好。 –