Assim como @James diz, ele ordenará todos os registros e obterá as primeiras 20 linhas.
Sendo assim, você garante os 20 primeiros artigos publicados, os mais novos não serão exibidos.
Em sua situação, eu recomendo que você adicionar desc
para order by publish_date
, se quiser que os artigos mais recentes, em seguida, o mais novo artigo vai ser o primeiro.
Se você precisar manter o resultado em ordem crescente, e ainda desejar apenas os 10 artigos mais recentes, pode solicitar ao mysql que classifique o resultado duas vezes.
Esta consulta abaixo classificará o resultado decrescente e limitará o resultado a 10 (que é a consulta entre parênteses). Ele ainda será classificado em ordem decrescente, e não estamos satisfeitos com isso, então pedimos ao mysql para classificá-lo mais uma vez. Agora temos o resultado mais recente na última linha.
select t.article
from
(select article, publish_date
from table1
order by publish_date desc limit 10) t
order by t.publish_date asc;
Se você precisar de todas as colunas, isso é feito da seguinte maneira:
select t.*
from
(select *
from table1
order by publish_date desc limit 10) t
order by t.publish_date asc;
Eu uso essa técnica quando escrevo manualmente consultas para examinar o banco de dados em busca de várias coisas. Eu não o usei em um ambiente de produção, mas agora, quando eu o marquei, a classificação extra não afeta o desempenho.
publish_date
s são iguais, a ordenação por eles não fornece resultados determinados, o que significa que, se você usarLIMIT
para paginação, poderá acabar recebendo os mesmos itens em páginas diferentes!