Estou usando o mesmo código-fonte e o mesmo banco de dados para WordPress, apenas a versão do mysql é diferente. Isso faz com que meu post de paginação tenha duplicação. Aqui está o que eu descobri. Alguma idéia de como resolvê-lo na versão superior?
Isso é para saída de consulta de página 2 e página 3. O lado esquerdo é o MySql 5.5, o lado direito é o MySql 5.6. up_posts.ID é único.
Instrução 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
Página 2:- diferente é o LIMITE 10,10
Página 3:- diferente é o LIMITE 20,10
Parece que o MySQL 5.5 classificará pelo ID, mas o 5.6 acima não tem essa capacidade.
Não foi adicionado
ORDER BY up_posts.post_date DESC, up_posts.ID DESC
mais resultado duplicado. Parece que precisamos adicionar isso manualmente para evitar um problema desnecessário.PARA SUA INFORMAÇÃO. Aplicou-se ao MySQL 5.6 e 5.7.
Consulte 8.2.1.16 Otimização de consulta LIMIT
Se você quiser ordenar por chave primária, você deve dizer isso explicitamente.