Proprio come dice @James, ordinerà tutti i record, quindi otterrà le prime 20 righe.
Così com'è, avrai la garanzia di ottenere i primi 20 articoli pubblicati, i nuovi non verranno mostrati.
Nella tua situazione, ti consiglio di aggiungere desc
a order by publish_date
, se vuoi gli articoli più recenti, allora l'articolo più recente sarà il primo.
Se devi mantenere il risultato in ordine crescente e desideri ancora solo i 10 articoli più recenti, puoi chiedere a mysql di ordinare il risultato due volte.
Questa query seguente ordinerà il risultato in ordine decrescente e limiterà il risultato a 10 (ovvero la query all'interno della parentesi). Sarà comunque ordinato in ordine decrescente e non ne siamo soddisfatti, quindi chiediamo a mysql di ordinarlo ancora una volta. Ora abbiamo il risultato più recente sull'ultima riga.
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 hai bisogno di tutte le colonne, è fatto in questo modo:
select t.*
from
(select *
from table1
order by publish_date desc limit 10) t
order by t.publish_date asc;
Uso questa tecnica quando scrivo manualmente query per esaminare il database per varie cose. Non l'ho usato in un ambiente di produzione, ma ora quando lo contrassegno in panchina, l'ordinamento extra non influisce sulle prestazioni.
publish_date
s sono uguali, l'ordinamento da essi non dà risultati determinati, il che significa che se usiLIMIT
per l'impaginazione, potresti finire per ottenere gli stessi articoli su pagine diverse!