此查询需要什么样的连接?

时间:2014-06-30 12:46:14

标签: mysql join

出于某种原因,我似乎总是遇到连接问题。无论如何,我有一个文章表和一篇article_comments表。我想按文章表格中的行数排序。因此,评论表中的一行将包含文章ID的列。现在,我的查询只返回articles表中的行,这些行包含链接到它的comments表中的行(只有带注释的文章)。我想返回articles表中的所有行,无论它是否有注释(你可以忽略内连接),但我仍然希望能够按每篇文章的注释数量来订购文章结果,即使它是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

1 个答案:

答案 0 :(得分: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