在同一查询中左连接和计数返回不正确的结果

时间:2016-09-24 13:57:01

标签: php mysql join

问题在于,如果有0条评论或1条评论,则计数显示为1,而其余部分运行良好意味着2,3等工作正常。

$sql  = "SELECT blog.*,count(blog.id) as Total FROM blog  left JOIN comment on   comment.id = blog.id GROUP BY date desc";

2 个答案:

答案 0 :(得分:0)

您的查询应如下所示:

SELECT b.date, count(c.id) as Total
FROM blog b LEFT JOIN
     comment c 
     ON c.id = b.id
GROUP BY b.date DESC;

这假设date来自blog(如果您当前的查询有效,则应该是这种情况)。区别在于您从第二个表计数,而不是第一个

这不会对*中的列使用blog。使用GROUP BY时,这通常是一个非常非常糟糕的主意。最佳实践(几乎所有SQL引擎强制执行)仅在SELECT中包含GROUP BY中的未聚合列。

注意:在两个非常不同的实体(博客和评论)之间使用id相同的列JOIN似乎非常尴尬。

答案 1 :(得分:0)

我只是从count(blog.id)改为count(comment.id)