我正在尝试在SQL查询中创建groupconcat。以下是表中的数据,但未获得预期的结果。

表:用户

 id    name     groupflag
 ------------------------------
 1     san1     0
 2     san2     0
 3     san3     277
 4     san4     277
 5     san5     277
 6     san6     288
 7     san7     288


我需要以下格式的结果,需要对具有groupflag不等于0的名称字段进行分组配置,
名称字段应基于groupflag值按逗号分组

id    name             groupflag
-------------------------------------------
1     san1             0
2     san2             0
3     san3,san4,san5   277
6     san5,san6        288


这是我的查询:

  SELECT IF(users.groupflag <> 0 ,GROUP_CONCAT(users.name SEPARATOR ','),'')
  AS name     FROM users
  GROUP BY groupflag

最佳答案

您可以使用UNION组合两个单独的查询:

SELECT   name, groupflag
FROM     users
WHERE    groupflag = 0

UNION ALL

SELECT   GROUP_CONCAT(name), groupflag
FROM     users
WHERE    groupflag <> 0
GROUP BY groupflag


sqlfiddle上查看。

09-25 16:31