현재 모든 데이터를 꺼내서 정리하고 있어 속도가 매우 느립니다. 이제 페이징이 필요합니다.
댓글 총 개수를 합산하는 분야를 고려하지 않고 더 좋은 방법이 없을까요? 기본 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>
기사 테이블에 댓글 수라는 필드를 추가한 다음 이 기사에 새 댓글이 올 때마다 1을 추가하고 이 필드에 따라 정렬합니다.
기사 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를 가져옵니다.