运行SQL查询并按另一个表的行数排序

时间:2012-05-04 17:54:36

标签: php sql join

基本上,

我有两个表,一个有一些帖子,另一个用于评论,我要做的是创建一个包含最受欢迎的帖子的页面,我会根据有多少来呈现热门帖子评论它。

这是我到目前为止的查询

mysql_query("SELECT * FROM posts JOIN comments ON posts.id = comments.content_id ORDER BY count('comments.id') LIMIT 10");

但是计数()搞砸了,有人能帮助我吗?谢谢!

3 个答案:

答案 0 :(得分:3)

如果您有一个聚合函数,例如COUNT(*),则应该包含GROUP BY子句:

此外,由于您想要返回评论最多的帖子,您需要按降序排序(从最高到最低)。

SELECT 
    posts.id, 
    COUNT(comments.content_id) as post_comments 
FROM 
    posts 
    LEFT JOIN comments 
        ON posts.id = comments.content_id 
GROUP BY posts.id
ORDER BY post_comments DESC
LIMIT 10

答案 1 :(得分:1)

删除comments.id :)周围的报价我还添加了我认为缺少的组。

mysql_query("SELECT * FROM posts JOIN comments ON posts.id = comments.content_id GROUP BY posts.id ORDER BY count(comments.id) LIMIT 10");

答案 2 :(得分:0)

从count语句中删除引号,并按以下方式添加组:

SELECT * FROM posts 
JOIN comments ON posts.id = comments.content_id 
GROUP BY comments.content_id
ORDER BY count(comments.content_id) 
LIMIT 10