有没有更好的方法来做到这一点?在同一张桌子上合并2个不同的地方
SELECT
(SELECT count(*) FROM `tbl` WHERE `status` = 0) as 'text1',
(SELECT count(*) FROM `tbl` WHERE `status` > 0) as 'text2'
text1和text2是标题。
有没有更好的方法来做到这一点?在同一张桌子上合并2个不同的地方
SELECT
(SELECT count(*) FROM `tbl` WHERE `status` = 0) as 'text1',
(SELECT count(*) FROM `tbl` WHERE `status` > 0) as 'text2'
text1和text2是标题。
如何
select sum(if(status=0,1,0)) as zeros,
sum(if(status>0,1,0)) as greater
from tbl;
不一定会更好,但它是一个非常有用的成语有你的心理阿森纳!
这给你一个不同的输出,但八九不离十工作:
SELECT `status` > 0 AS 'stat', COUNT(*)
FROM `tbl`
GROUP BY stat
输出:
stat | COUNT(*)
-------------------------------
0 | (count where status = 0)
1 | (count where status > 0)
我投了使用两种不同的查询,以简化和改善代码的可读性的缘故。没有使用一个聪明的黑客的查询组合,当你可以达到同样的效果,更可读的代码具有两个查询的多少好处,
这里的另一种方式:
SELECT
COUNT(NULLIF(`status` = 0, 0)),
COUNT(NULLIF(`status` > 0, 0))
FROM `tbl`
这正是我在寻找。谢谢 再见丑陋的子选择... – Kim 2009-01-06 12:55:35