2017-03-31 54 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;