2017-03-31 60 views
0

我知道如何通過(見下文)將字段組中的字段的所有值連接起來,但我不想重複使用值。例如,如果「Bob」執行了5個類型爲「1」的操作,並且類型爲「2」,則我只需要:1,2而不是1,1,1,1,1,2如何通過MySQL連接組中列的唯一值?

但是,UNIQUE必須而不是位於總查詢中,因爲我仍然需要這些操作的其他列的值。

SELECT 
    user.name, 
    GROUP_CONCAT(type SEPARATOR ',') AS types, 
    SUM(produced) 
FROM user 
GROUP BY user.name; 

回答

2

您可以使用不同的內部group_cocat功能

SELECT 
    user.name, 
    GROUP_CONCAT(distinct type SEPARATOR ',') AS types, 
    SUM(produced) 
FROM user 
GROUP BY user.name; 
+0

謝謝,這正是我需要的。 –

0

就像這樣....在子查詢中做第一級聚合,然後在它上面進行連接。

SELECT TMP.NAME 
    , GROUP_CONCAT(TYPE SEPARATOR ',') AS TYPES 
    , SUM(PRODUCED) 
FROM (
    SELECT USER.NAME 
     , TYPE 
     , SUM(PRODUCED) PRODUCED 
    FROM USER 
    GROUP BY USER.NAME 
     , TYPE 
) TMP 
GROUP BY TMP.NAME; 
0

使用distinct

SELECT DISTINCT 
    user.name, 
    GROUP_CONCAT(type 
     SEPARATOR ',') AS types, 
    SUM(produced) 
FROM 
    user 
GROUP BY user.name;