Heim >Backend-Entwicklung >PHP-Tutorial >mysql – PHP, was ist der schnellste Weg, Artikel basierend auf der Anzahl der gezählten Kommentare zu sortieren?

mysql – PHP, was ist der schnellste Weg, Artikel basierend auf der Anzahl der gezählten Kommentare zu sortieren?

WBOY
WBOYOriginal
2016-08-20 09:04:01943Durchsuche

Derzeit werden alle Daten herausgenommen und sortiert, was sehr langsam ist. Und jetzt ist Paging erforderlich.

Gibt es eine bessere Möglichkeit, die Gesamtzahl der Kommentare zu addieren, ohne das Feld zu berücksichtigen? Können native SQL-Anweisungen direkt abgeschlossen werden?

Antwortinhalt:

Derzeit werden alle Daten herausgenommen und sortiert, was sehr langsam ist. Und jetzt ist Paging erforderlich.

Gibt es eine bessere Möglichkeit, die Gesamtzahl der Kommentare hinzuzufügen, ohne das Feld zu berücksichtigen? Können native SQL-Anweisungen direkt abgeschlossen werden?

<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, was ist der schnellste Weg, Artikel basierend auf der Anzahl der gezählten Kommentare zu sortieren?

  1. Fügen Sie in der Artikeltabelle ein Feld namens „Anzahl der Kommentare“ hinzu und fügen Sie dann jedes Mal 1 hinzu, wenn es einen neuen Kommentar zu diesem Artikel gibt, und sortieren Sie dann nach diesem Feld

  2. Wenn Sie nur nach Artikel-ID sortieren möchten, können Sie dies in der Kommentartabelle tun:

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

wobei post_id die Artikel-ID ist, comment die Kommentartabelle ist, erhält diese Anweisung die Top-10-Artikel-IDs mit den meisten Kommentaren

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn