2014-04-08 46 views
0

我想在我的sql查詢中創建groupconcat。以下是我在表中的數據,但沒有得到預期的結果。Groupconcat使用mysql select

表:用戶

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 

回答

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

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;