我正在学习如何使用JOINS。我不确定我做错了什么。 所以我想通过最多评论对我的参赛作品进行排序。这就是我以为我会这样做的。
SELECT a.*, COUNT(b.comment) AS comments_count
FROM entries a
LEFT JOIN comments b
ON a.id = b.entry_id
ORDER BY comments_count DESC
LIMIT 6
这显然是错误的方式,任何帮助? 我有一个带有注释的表,用于存储注释应该带有行名称“entry_id”的条目。在条目表上,我有一个id为条目的条目,它正在与comments.entry_id相提并论。
编辑:我也只通过执行此查询获得1个结果。不知道为什么。
答案 0 :(得分:4)
您需要使用GROUP BY
来获取每个条目的评论数量,之后您可以对其进行排序。
试试这个:
SELECT
a.*,
COUNT(b.comment) AS comments_count
FROM
entries a
LEFT JOIN comments b
ON a.id = b.entry_id
GROUP BY
a.id
ORDER BY
comments_count DESC
注意:使用count
之类的聚合函数而不使用group by
时,它总会重新调整一行。