2009-01-06 52 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` 
相关问题