2011-10-20 25 views
1

在深入Python腳本之前,我想知道我們是否可以通過單獨的MySQL查詢來實現這一點?如何處理這個棘手的MySQL查詢[基於來自同一個表的優先級連接]?

我有一個表,每個ID有多個記錄。我想將多個值連接成一個記錄並根據優先級連接?還在我這兒?

一個表可能有所幫助:

ID Value Priority 
1 AA 1 
1 KK 3 
1 CC 2 
2 AA 1 
3 EE 4 
3 FF 5 
2 HH 6 

所需的輸出:

ID Concat_Value 
1 AA, CC, KK 
2 AA, HH 
3 EE, FF 

優先進入以遞增的順序。數量越小,優先級越高。

回答

3

容易如餡餅。

SELECT id, GROUP_CONCAT(`value` ORDER BY priority) as concat_value 
FROM table1 
GROUP BY id 

參見:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

如果你想在GROUP_CONCAT一個空間,你就必須更改分隔符:

SELECT 
    id 
    , GROUP_CONCAT(`value` ORDER BY priority SEPARATOR ', ') as concat_value 
FROM table1 
GROUP BY id 
+0

我知道這個組CONCAT,但不知道由訂單在組連續。這是迄今爲止我得到的最快的答案!我們如何獲得組concat中的空間 - 比如1,2而不是1,2? – ThinkCode

+0

@ThinkCode,請參閱更新的答案。 – Johan

+0

真棒,它的作品! – ThinkCode