我有兩個表,一個有一些崗位上,另一徵求意見,我所要做的是創建一個頁面與最熱門的帖子,我會根據它有多少評論來渲染熱門帖子。
這裏是我到目前爲止
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