mysql按条件统计count,及关联查询显示count为0的记录问题

业务场景是这样的。我在关联查询时,需要按不同的条件,统计出两个或者多个count。并且也要显示出count为0的记录。

拆分问题:

    1、按条件统计多个count

    2、使用count后关联查询失效。count为0的记录不显示。

解决方法如下:

    1、按条件统计count可以用如下方法

COUNT(IF(条件 , 统计字段, NULL))
SELECT t1.*,COUNT(IF(t3.status = 1 , t2.id, NULL)) AS downCount,COUNT(IF(t3.status = 2 , t2.id, NULL)) AS upCount FROM ex_exam_question t1
LEFT JOIN ex_exam_question_suggestion t2 ON t2.question_id = t1.`id`
LEFT JOIN ex_exam_question_suggestion_item t3 ON t2.suggestion_item_id = t3.id
WHERE 1=1

2、解决关联查询失效问题

通过加group by来解决

将上述sql修改如下

 

SELECT t1.*,COUNT(IF(t3.status = 1 , t2.id, NULL)) AS downCount,COUNT(IF(t3.status = 2 , t2.id, NULL)) AS upCount FROM ex_exam_question t1
LEFT JOIN ex_exam_question_suggestion t2 ON t2.question_id = t1.`id`
LEFT JOIN ex_exam_question_suggestion_item t3 ON t2.suggestion_item_id = t3.id
WHERE 1=1 GROUP BY t1.`id`

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值