[英]MySQL Select return wrong NULL value with COUNT
我不喜欢这样,我认为那里有一个更优雅的解决方案,但是它可以工作,并且可以帮助您找到更好的解决方案。
select
t1.id,
ifnull(t3.ct, 0)
from
temp t1
left join
(select
t2.referer_id,
count(t2.referer_id) as ct
from temp t2
group by t2.referer_id) t3
on t1.id = t3.referer_id;
再想一想,这里是一个避免子选择的选项:
select t1.id, ifnull(count(t2.referer_id), 0)
from temp t1
left join temp t2 on t1.id = t2.referer_id
group by t1.id;
即使我无法解释导致此问题的原因,我还是通过另一种解决方案来解决,例如:
SELECT `referer_id`,
if(`referer_id` is null, @num := @num + 1, count(`referer_id`)) as referer_id_cnt
FROM `users`, (select @num := 0) tmp
GROUP BY `referer_id`
嗯,我上面写的绝对不是一个正确的答案。 实际上,这将对您有所帮助。
SELECT `referer_id`,count(1) FROM `users`
GROUP BY `referer_id`
看看这个链接如何在MySQL中计算NULL值?
SELECT `referer_id`,count(NVL(`referer_id`,0))
FROM `users`
GROUP BY `referer_id`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.