Seperti yang dikatakan @James, ia akan memesan semua catatan, lalu mendapatkan 20 baris pertama.
Karena itu, Anda dijamin mendapatkan 20 artikel pertama yang diterbitkan, yang lebih baru tidak akan ditampilkan.
Dalam situasi Anda, saya sarankan Anda tambahkan desc
ke order by publish_date
, jika Anda ingin artikel terbaru, maka artikel terbaru akan menjadi yang pertama.
Jika Anda perlu menjaga hasil dalam urutan menaik, dan masih hanya ingin 10 artikel terbaru, Anda dapat meminta mysql untuk mengurutkan hasil Anda dua kali.
Kueri ini di bawah ini akan mengurutkan hasil turun dan membatasi hasilnya hingga 10 (yaitu permintaan di dalam kurung). Itu masih akan diurutkan dalam urutan menurun, dan kami tidak puas dengan itu, jadi kami meminta mysql untuk mengurutkannya sekali lagi. Sekarang kami memiliki hasil terbaru di baris terakhir.
select t.article
from
(select article, publish_date
from table1
order by publish_date desc limit 10) t
order by t.publish_date asc;
Jika Anda membutuhkan semua kolom, dilakukan dengan cara ini:
select t.*
from
(select *
from table1
order by publish_date desc limit 10) t
order by t.publish_date asc;
Saya menggunakan teknik ini ketika saya secara manual menulis pertanyaan untuk memeriksa database untuk berbagai hal. Saya belum menggunakannya di lingkungan produksi, tetapi sekarang ketika saya menandainya, penyortiran tambahan tidak memengaruhi kinerja.
publish_date
s sama, memesan oleh mereka tidak memberikan hasil yang menentukan, artinya jika Anda menggunakanLIMIT
untuk pagination, Anda mungkin mendapatkan item yang sama di halaman yang berbeda!