2009-01-06 100 views

回答

4

如何

select sum(if(status=0,1,0)) as zeros, 
     sum(if(status>0,1,0)) as greater 
from tbl; 

不一定會更好,但它是一個非常有用的成語有你的心理阿森納!

+0

這正是我在尋找。謝謝 再見醜陋的子選擇... – Kim 2009-01-06 12:55:35

0

這給你一個不同的輸出,但八九不離十工作:

SELECT `status` > 0 AS 'stat', COUNT(*) 
FROM `tbl` 
GROUP BY stat 

輸出:

stat | COUNT(*) 
------------------------------- 
0 | (count where status = 0) 
1 | (count where status > 0) 
1

我投了使用兩種不同的查詢,以簡化和改善代碼的可讀性的緣故。沒有使用一個聰明的黑客的查詢組合,當你可以達到同樣的效果,更可讀的代碼具有兩個查詢的多少好處,

1

這裏的另一種方式:

SELECT 
    COUNT(NULLIF(`status` = 0, 0)), 
    COUNT(NULLIF(`status` > 0, 0)) 
FROM `tbl` 
相關問題