基本上,
我有两个表,一个有一些帖子,另一个用于评论,我要做的是创建一个包含最受欢迎的帖子的页面,我会根据有多少来呈现热门帖子评论它。
这是我到目前为止的查询
mysql_query("SELECT * FROM posts JOIN comments ON posts.id = comments.content_id ORDER BY count('comments.id') LIMIT 10");
但是计数()搞砸了,有人能帮助我吗?谢谢!
答案 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