[英]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.