GROUP_CONCAT 有两个字段
GROUP_CONCAT with two fields
我的 table 有两个字段(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
您可以通过在 group_concat
中添加一个 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;
使用子查询:
select id, group_concat(concat(status, '-', cnt))
from (select id, status, count(*) cnt
from mytable group by 1, 2) x
group by 1
我的 table 有两个字段(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
您可以通过在 group_concat
中添加一个 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;
使用子查询:
select id, group_concat(concat(status, '-', cnt))
from (select id, status, count(*) cnt
from mytable group by 1, 2) x
group by 1