0

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

4

1 回答 1

4

您需要使用 aGROUP 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它的聚合函数时,总是会返回一行。

于 2013-05-23T11:50:31.970 回答