有沒有更好的方法來做到這一點?在同一張桌子上合併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