出现这个问题原因:
如图:我需要查询某个客户不同订单状态的数量。可以发现最终统计的数据只是一个字段里的内容。如果分4条接口查询分别查询不同状态出现的次数是最容易想到的。但可能就过于臃肿了太感觉太憨笨,查询时间大大加长,代码量也会增多。
如上图:相当与我需要知道者个字段中1、2、3、4
分别出现了几次
最中解决方式直接通过sql中的COUNT()进行汇总数量。
这时候用过COUNT()函数的人都知道它可以在查询汇总是进行某列字段的统计,统计的只是这列字段出现的次数。
所以这里我们需要在COUNT()里进行条件判断
COUNT(字段=条件 or null)
这部分 为什么要加上or NULL 是因为当COUNT统计的者个条件不成立时,COUNT( state = 1 OR NULL ) AS waitPayment, 结果为false 不是 NULL,而COUNT()进行统计时只有内容为Null时才会不计入统计中。
所以这里我们需要处理一下当条件不成立时设为null。而or null就是处理当前面表达式不成立则继续输出null,从而达到只汇总条件成立的数据。
最终输出结果为下图: