mysql group by不满足返回0,count(*)在MySQL中使用group by时不返回0

I have the following query

SELECT info, count(*) as info_cnt

FROM T

WHERE uid = 1 and info IN ('a', 'b','c', 'd')

GROUP BY info

It returns

+----------+--------+

| info_cnt | info |

+----------+--------+

| 334 | a |

| 2 | b |

| 1400 | d |

+----------+--------+

How can I write the query so that it returns the count of c as 0.

解决方案

You could create a temporary table:

CREATE TEMPORARY TABLE info_values (v CHAR(1));

INSERT INTO info_values VALUES ('a'), ('b'), ('c'), ('d');

And then do a LEFT JOIN:

SELECT v, count(uid) as info_cnt

FROM info_values

LEFT JOIN T ON uid = 1 AND T.info = info_values.v

GROUP BY v

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值