GROUP_CONCAT有两个字段

时间:2015-08-01 23:13:53

标签: mysql

我的表有两个字段(ID和状态)

我想获得每个ID的每个状态的group_concat个。

ID  Status
1   True
1   True
1   False
2   True
2   False
2   False

我希望我的结果是

ID Group_Concat
1  (True-2, False-1)
2  (True-1, False-2)

我可以在PHP中解析True-#/ False-#除非有办法在group_concat中创建一个单独的字段?

我玩过以下内容,但无济于事。为每个ID和状态保持单独的行。这将是更大的SELECT的一部分,但我不认为用这个SQL混淆这个问题是相关的。

SELECT ID,Status, GROUP_CONCAT(c) 
FROM (
  SELECT ID, Status,COUNT(Status) c 
  FROM buyer_advert GROUP BY ID,Status
) a GROUP BY ID, Status

2 个答案:

答案 0 :(得分:2)

您可以在concat内添加group_concat,如下所示:

SELECT 
  ID,
  GROUP_CONCAT(CONCAT(Status,'-',c),' ' ORDER BY Status DESC) 
FROM (SELECT ID, status, COUNT(Status) c
      FROM buyer_advert 
      GROUP BY ID, status
     ) a 
GROUP BY ID;

Sample SQL Fiddle

答案 1 :(得分:1)

使用子查询:

select id, group_concat(concat(status, '-', cnt))
from (select id, status, count(*) cnt
  from mytable group by 1, 2) x
group by 1

请参阅SQLFiddle