【发布时间】:2009-05-20 15:45:42
【问题描述】:
我想计算表中的总记录数和符合特定条件的总记录数。我可以通过两个单独的查询来完成这些:
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}
如果没有,我可以发出两个查询并将它们包装在一个事务中,以便它们保持一致,但我希望用一个来完成。
edit:我最关心的是原子性;如果需要两个子 SELECT 语句,只要有来自某个地方的 INSERT 不会使两个响应不一致,就可以了。
编辑 2:CASE 答案很有帮助,但在我的具体情况下,条件可能包括与另一个表的 JOIN(忘记在我的原始帖子中提及,抱歉)所以我猜这种方法行不通。
【问题讨论】:
-
你用的是什么数据库?
-
MySQL 但如果它非常简单,我想大致了解它
-
与解决方案相关但与解决方案无关:您还可以使用它来获取较大表的计数。选择 SQL_CALC_FOUND_ROWSFROM 我的表;选择 FOUND_ROWS(); SELECT SQL_CALC_FOUND_ROWSFROM MyTable WHERE {条件}; SELECT FOUND_ROWS();
标签: sql