我想統計表中的記錄總數和匹配特定條件的總記錄數。我可以做兩個單獨的查詢這些:兩個SQL COUNT()查詢?
SELECT COUNT(*) AS TotalCount FROM MyTable;
SELECT COUNT(*) AS QualifiedCount FROM MyTable
{possible JOIN(s) as well e.g. JOIN MyOtherTable mot ON MyTable.id=mot.id}
WHERE {conditions};
有沒有辦法將這些組合成一個查詢,以便我在一行中獲得兩個字段?
SELECT {something} AS TotalCount,
{something else} AS QualifiedCount
FROM MyTable {possible JOIN(s)} WHERE {some conditions}
如果沒有,我可以發出兩個查詢和包裹他們在一個交易所以它們是一致的,但我希望有一個做到這一點。
編輯:我最關心的是原子性;如果有兩個子SELECT語句需要,那麼只要有一個INSERT來自某個地方,它就不會使這兩個響應不一致。
編輯2:CASE的答案很有幫助,但在我的具體實例中,條件可能包括與另一個表的聯接(忘了在我原來的帖子中提到,抱歉),所以我猜這種方法不行。
您使用的是哪種數據庫? – Andomar 2009-05-20 15:48:07
MySQL,但我想知道它一般如果它非常簡單 – 2009-05-20 15:54:37
相關但不是解決方案:你也可以用來獲得更大的表的計數。 SELECT SQL_CALC_FOUND_ROWSFROM MyTable; SELECT FOUND_ROWS(); SELECT SQL_CALC_FOUND_ROWSFROM MyTable WHERE {conditions}; SELECT FOUND_ROWS(); – 2009-05-20 16:03:23