出于某种原因,我似乎总是在连接方面遇到问题。无论如何,我有一个文章表和一个文章评论表。我想根据文章的评论数量对文章表中的行进行排序。所以评论表中的一行将有一个文章 id 列。现在,我的查询仅返回文章表中的行,该行具有链接到它的评论表中的行(仅具有评论的文章)。我想返回文章表中的所有行,无论它是否有评论(您可以忽略此处的内部联接),但我仍然希望能够按每篇文章的评论数对文章结果进行排序,即使它是0。我希望你理解。
这是我当前的查询:
SELECT
a.article_id, a.type,
p.article_id, p.platform_id,
c.comment_id, c.article_id, COUNT(c.comment_id) AS comments
FROM articles AS a
INNER JOIN article_plat_assoc AS p ON a.article_id = p.article_id
LEFT JOIN article_comments AS c ON a.article_id = c.article_id
WHERE p.platform_id = 1
ORDER BY comments DESC
LIMIT 15
这是 SQLFiddle: http://sqlfiddle.com/#!2/db1e8/1/0
最佳答案
因为您有聚合函数Count
,所以您需要GROUP BY
至少一个字段,否则您将返回一行。
SELECT
a.article_id, a.title, c.comment_id, c.article_id, COUNT(c.comment_id) AS comments
FROM articles AS a
LEFT JOIN article_comments AS c ON a.article_id = c.article_id
GROUP BY a.article_id
ORDER BY comments DESC
LIMIT 15
欲了解更多信息,请阅读MySQL Extensions to GROUP BY
关于mysql - 此查询需要哪种类型的联接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24490480/