業務場景是這樣的。我在關聯查詢時,需要按不同的條件,統計出兩個或者多個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`