好吧,我正在尝试做的是根据不同的标准在同一个表上执行不同的COUNT(),而不使用嵌套查询(效率)或子查询(因此可以将其作为视图)。这可能吗?
示例:一个表有一个日期列 - 查询应该能够产生&之前的行数。在一个不变的约会之后。
答案 0 :(得分:31)
您正在使用MySQL,因此您可以利用其功能,布尔表达式的计算结果为0表示false,1表示true。 {1}的SUM()
等于表达式为真的COUNT()
。
SELECT SUM( date_column < '2009-08-21' ) AS prior_to_date,
SUM( date_column > '2009-08-21' ) AS after_date
FROM MyTable;
PS:不要在支持SQL标准行为的其他品牌数据库上尝试此操作,即布尔表达式产生布尔值,而不是0或1整数。