Mysql从多个表中选择并获得零计数

时间:2015-03-18 10:12:41

标签: mysql

我有一个带有2个表的简单数据库 -

问题&答案

都有一个问题字段,我试图通过所有答案的计数得到所有问题的列表 - 问题是有些问题没有答案。

SELECT questions.*,COUNT(answers.questionid) AS num_answers 
FROM questions 
LEFT JOIN answers 
ON questions.questionid = answers.questionid

上面的sql给出了所有有答案的问题的计数,但是如果答案为零,那么它就不会出现在列表中。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

还要按要选择的列进行分组

SELECT questions.id, questions.title, COUNT(answers.questionid) AS num_answers 
FROM questions 
LEFT JOIN answers ON questions.questionid = answers.questionid
GROUP BY questions.id, questions.title

答案 1 :(得分:1)

只需使用count(*)

SELECT COUNT(*) AS num_answers
FROM questions LEFT JOIN
     answers
     ON questions.questionid = answers.questionid

使用count(<column>)名称时,您将计算列中非NULL值的数量。通过使用第二个表中的列,您只计算匹配。

此外,您不需要questions.*。大多数SQL引擎都会为此返回错误。查询只返回一行,因为它是一个没有group by的聚合查询。

编辑:

如果您希望每个问题,请使用group by并使用answers中的列计算匹配项:

SELECT questions.*, 
       COUNT(answers.questionid) as num_answers
FROM questions LEFT JOIN
     answers
     ON questions.questionid = answers.questionid
GROUP BY questions.questionid