2011-12-01 104 views
8

我目前有一些帶回標籤的sql。他們應該有不同的ID,但他們不....所以我目前的數據是這樣的:mysql將不同的行選入逗號分隔的列表列

Microsoft | GGG | 1 | 167 
Microsoft | GGG | 1 | 2 
Microsoft | GGG | 1 | 1 

我想什麼做的是隻有一排帶回來串連成一個劃定的最後一列像這樣的列表:

Microsoft | GGG | 1 | 167, 2, 1 

我爲此使用了mySQL 5。

+0

我不知道你問你的標誌是什麼。如果您問了錯誤的問題,請評估所提供的答案,看看它是否回答您在此提出的問題,並通過選擇正確的答案來解決問題。然後你可以去問你的*真實問題。 – Will

回答

21

使用GROUP_CONCAT()爲此,用GROUP BY覆蓋其他三列:

SELECT 
    name, -- Microsoft 
    other, -- GGG 
    other2, -- 1 
    GROUP_CONCAT(id) AS ids 
FROM tbl 
GROUP BY name, other, other2 
+0

如果'ids'是一個大集合,不要忘記設置一個足夠大的值:'SET SESSION group_concat_max_len = 1000000;' – bishop

+0

這不會給出不同的值。 – geoidesic

+0

@geoidesic不確定你的意思。這個問題沒有要求不同的值,但如果你閱讀['GROUP_CONCAT()'文檔](https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html# function_group-concat),你會發現它支持'DISTINCT'關鍵字去重複它的字符串返回值。 –