WordPressで同じソースコードと同じデータベースを実行していますが、mysqlのバージョンのみが異なります。それは私のページネーションの投稿に重複があります。これが私が見つけたものです。より高いバージョンでそれを解決する方法はありますか?
これは、ページ2およびページ3のクエリ出力用です。左側はMySql 5.5、右側はMySql 5.6です。 up_posts.IDは一意です。
SQLステートメント:-
SELECT SQL_CALC_FOUND_ROWS up_posts.ID FROM up_posts WHERE 1=1 AND up_posts.post_type = 'post' AND (up_posts.post_status = 'publish' OR up_posts.post_status = 'closed' OR up_posts.post_status = 'private' OR up_posts.post_status = 'hidden') ORDER BY up_posts.post_date DESC LIMIT 10, 10
SELECT SQL_CALC_FOUND_ROWS up_posts.ID FROM up_posts WHERE 1=1 AND up_posts.post_type = 'post' AND (up_posts.post_status = 'publish' OR up_posts.post_status = 'closed' OR up_posts.post_status = 'private' OR up_posts.post_status = 'hidden') ORDER BY up_posts.post_date DESC LIMIT 20, 10
MySQL 5.5はIDでソートするようですが、上記の5.6にはこの機能がありません。
追加ORDER BY up_posts.post_date DESC, up_posts.ID DESC
重複する結果はもうありません。不要な問題を回避するために手動で追加する必要があるようです。
ご参考までに。 MySQL 5.6および5.7に適用されました。
を参照してください8.2.1.16 LIMITクエリの最適化
主キーで並べ替える場合は、明示的に指定する必要があります。