gpt4 book ai didi

mysql - 此查询需要哪种类型的联接?

转载 作者:行者123 更新时间:2023-11-30 00:06:37 25 4
gpt4 key购买 nike

出于某种原因,我似乎总是在连接方面遇到问题。无论如何,我有一个文章表和一个文章评论表。我想根据文章的评论数量对文章表中的行进行排序。所以评论表中的一行将有一个文章 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

DEMO

欲了解更多信息,请阅读MySQL Extensions to GROUP BY

关于mysql - 此查询需要哪种类型的联接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24490480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com