我知道如何连接组中字段的所有值(见下文),但我不想重复值。例如,如果" 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;
答案 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;