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