我想统计表中的记录总数和匹配特定条件的总记录数。我可以做两个单独的查询这些:两个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