有更好的方法吗?
SELECT
(SELECT count(*) FROM `tbl` WHERE `status` = 0) as 'text1',
(SELECT count(*) FROM `tbl` WHERE `status` > 0) as 'text2'
text1和text2是标题。
答案 0 :(得分:4)
怎么样
select sum(if(status=0,1,0)) as zeros,
sum(if(status>0,1,0)) as greater
from tbl;
可能不一定会更好,但这对你的心理武器库来说是一个有用的习惯用法!
答案 1 :(得分:1)
为了简化和提高代码可读性,我投票赞成使用两个不同的查询。使用聪明的hack来组合查询没什么好处,当你可以通过两个查询获得相同的结果和更易读的代码时,
答案 2 :(得分:1)
这是另一种方式:
SELECT
COUNT(NULLIF(`status` = 0, 0)),
COUNT(NULLIF(`status` > 0, 0))
FROM `tbl`
答案 3 :(得分:0)
这为您提供了不同的输出,但sorta有效:
SELECT `status` > 0 AS 'stat', COUNT( * )
FROM `tbl`
GROUP BY stat
输出:
stat | COUNT(*)
-------------------------------
0 | (count where status = 0)
1 | (count where status > 0)