首頁 > 後端開發 > php教程 > mysql - php,依照文章統計到的評論條數排序,怎麼樣的方式最快?

mysql - php,依照文章統計到的評論條數排序,怎麼樣的方式最快?

WBOY
發布: 2016-08-20 09:04:01
原創
943 人瀏覽過

目前是把所有資料取出來,再排序,速度很慢。而且現在要求做分頁。

在不考慮加上評論總數這個欄位的情況下,有沒有更優的方法?原生的sql語句可以直接完成嗎?

回覆內容:

目前是把所有資料取出來,再排序,速度很慢。而且現在要求做分頁。

在不考慮加上評論總數這個欄位的情況下,有沒有更優的方法?原生的sql語句可以直接完成嗎?

<code>SELECT 
    posts.id, 
    posts.content, 
    comments.id AS comment_id,
    comments.body,
    count(comments.id)
FROM posts
LEFT JOIN comments --左连接,保证左表posts中没有评论的文章也显示出来
ON posts.id = comments.post_id 
GROUP BY posts.id --分组,配合count(comments.id)统计到每篇文章的评论数
ORDER BY count(comments.id) DESC, posts.id DESC --按评论数排序,相同则按文章ID排序
LIMIT 2 OFFSET (3-1)*2 --分页,2表示每页显示的文章数量,3表示第3页</code>
登入後複製

mysql - php,依照文章統計到的評論條數排序,怎麼樣的方式最快?

  1. 在文章表裡面加個字段叫評論數,然後每次有這篇文章新的評論就同時把它加1,然後根據這個字段排序即可

  2. 如果只拿文章ID的排序,可以在評論表裡面這樣做:

<code>select post_id from comment group by post_id order by count(1) desc limit 0, 10;</code>
登入後複製

其中post_id是文章ID,comment是評論表,這個語句拿到評論數最多的前10篇文章ID

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板