MySQL按大多数评论排序

时间:2013-05-23 11:48:57

标签: mysql left-join

我正在学习如何使用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个结果。不知道为什么。

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时,它总会重新调整一行。