我有两个表,一个有一些岗位上,另一征求意见,我所要做的是创建一个页面与最热门的帖子,我会根据它有多少评论来渲染热门帖子。
这里是我到目前为止
mysql_query("SELECT * FROM posts JOIN comments ON posts.id = comments.content_id ORDER BY count('comments.id') LIMIT 10");
但伯爵()查询是搞乱起来,任何人都可以帮助我吗?谢谢!
我有两个表,一个有一些岗位上,另一征求意见,我所要做的是创建一个页面与最热门的帖子,我会根据它有多少评论来渲染热门帖子。
这里是我到目前为止
mysql_query("SELECT * FROM posts JOIN comments ON posts.id = comments.content_id ORDER BY count('comments.id') LIMIT 10");
但伯爵()查询是搞乱起来,任何人都可以帮助我吗?谢谢!
如果你有一个聚合函数,如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
移除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");
从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
是错误被返回,还是它只是不工作? – Bryan
没有错误,只是没有工作。 – Frank
我自己修复了它,对不起,我需要在查询中添加GROUP BY功能 – Frank