Group_concat使用mysql选择

时间:2014-04-08 11:10:20

标签: mysql sql

我正在尝试在我的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

2 个答案:

答案 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;