如何在MySQL中为一组中的列的唯一值进行连接?

时间:2017-03-31 22:11:41

标签: mysql

我知道如何连接组中字段的所有值(见下文),但我不想重复值。例如,如果" Bob"进行了5次" 1"还有一个类型" 2",我只想:1,2,而不是1,1,1,1,1,2

但是,UNIQUE必须在整个查询中,因为我仍然需要这些操作的其他列的值。

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

3 个答案:

答案 0 :(得分:2)

您可以使用不同的内部group_cocat函数

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

答案 1 :(得分: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;

答案 2 :(得分:0)

使用distinct

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