2010-04-26 117 views
3

我正在嘗試創建一個MySQL SELECT語句,它將從表中選擇一堆行,並將該行的id(多行將具有相同的id)對結果進行分組。通過id對結果進行分組的MySQL SELECT語句?

下面是我想要做的一個例子。比方說,我有如下表:

id  |  name 
1  |  Art 
1  |  Arnold 
1  |  Anatoly 
2  |  Beatrice 
2  |  Bertha 
2  |  Betty 
3  |  Constantine 
3  |  Cramer 

我想有MySQL的返回由ID如下分組的數據:

[1] => Art, Arnold, Anatoly 
[2] => Beatrice, Bertha, Betty 
[3] => Constantine, Cramer 

我知道我可以做一個簡單的SQL選擇,然後循環在PHP中的結果,但我想讓MySQL在可能的情況下處理分組。

回答

4

一個可能的解決方案是使用MySQL的GROUP_CONCAT(expr)函數。

SELECT 
    GROUP_CONCAT(name) 
FROM 
    foo 
GROUP BY 
    id 

但要記住:

的結果被截斷其中有1024
+0

的缺省值1024值已經回來了一個由group_concat_max_len系統變量給出的最大長度,多次困擾我。 – 2010-04-26 23:31:02

+0

@MikeB,它每天都在困擾我:我出生在10/24。 :P – 2010-04-27 00:16:06

+0

感謝@VolkerK的回覆,但我肯定會遇到最大長度問題,因爲我正在處理數千行=) – Rohan 2010-04-27 01:30:09