SQL根据不同的条件查询count

在一条语句中根据不同的条件count对应的数据。

select count(if(条件, true, null)), count(if(条件, true, null)) from table;

以上语句可以根据两个不同的条件一次计算出对应的count值,很明显的用到的是IF函数。IF( expr1, expr2, expr3)。

以下来自官方文档的说明

If expr1 is TRUE (expr1 <> 0 and expr1 <> NULL), IF() returns expr2. Otherwise, it returns expr3.

用到count中,即if的条件为真,则if子句返回true,否则返回null。count子句依据该返回值进行计数。

具体的条件依据需求变化,例如需要去重,可以变为count(distinct if(条件, expr2, expr3))

同理,if也可用于sum等其他聚合函数计算。

注意:

第一条sql语句中的返回值不一定为true, null 可依据需求调整,该文章仅作参考。

该文章测试环境为Mysql 5.7.25