我正在尝试在我的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
我需要以下格式的结果,需要groupconcat有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
答案 0 :(得分:4)
您可以使用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上查看。
答案 1 :(得分:0)
select id, group_concat(`Name` separator ',') as `Column`
from
(
select id, concat(`Name`, ':',
group_concat(`Value` separator ',')) as `Name`
from mytbl
group by id, `Name`
) tbl
group by groupflag;