如何获得计数0甚至表中不存在数据?

时间:2017-04-10 06:47:22

标签: mysql count aggregate-functions

我坚持这个SQL查询。我希望得到条件中描述的所有记录,即使表中不存在。我希望得到这样的结果。

 +-----------------+
 | total |  rating |
 +-----------------+
 | 0     |    5    | 
 +-----------------+
 | 0     |    25   |
 +-----------------+
 | 1     |    50   |
 +-----------------+
 | 3     |    75   |
 +-----------------+
 | 0     |    100  |
 +-----------------+

我尝试使用COUNT函数获取结果。评分始终为5,25,50,75,100

 SELECT * FROM (SELECT COUNT(SurveyAnswer.rating) AS total,rating 
 FROM survey_answers AS SurveyAnswer INNER JOIN surveys AS Survey ON 
 SurveyAnswer.survey_id = Survey.id WHERE SurveyAnswer.survey_id = '33' 
 AND SurveyAnswer.rating  IN (5,25,50,75,100) 
 AND SurveyAnswer.organisation_id = '26742' 
 GROUP BY SurveyAnswer.rating) tbl

显示当前结果

 +-----------------+
 | total |  rating |
 +-----------------+
 | 1     |    50   |
 +-----------------+
 | 3     |    75   |
 +-----------------+

2 个答案:

答案 0 :(得分:1)

尝试左连接而不是内部

答案 1 :(得分:1)

你能试试吗

SELECT A.RATING, IFNULL(RC,0) AS TOTAL_RATING
 FROM (SELECT 5 AS RATING UNION ALL SELECT 25 UNION ALL SELECT 50 UNION ALL SELECT 75 UNION ALL SELECT 100) AS A
 LEFT JOIN (SELECT RATING, COUNT(*) AS RC 
            FROM survey_answers 
            INNER JOIN surveys AS Survey ON  SurveyAnswer.survey_id = Survey.id 
            WHERE SurveyAnswer.survey_id = '33'
            AND SurveyAnswer.organisation_id = '26742' 
             GROUP BY SurveyAnswer.rating) B ON A.RATING = B.RATING