@James'in söylediği gibi, tüm kayıtları sipariş edecek ve ardından ilk 20 satırı alacaktır.
Bu nedenle, ilk yayınlanan 20 makaleyi almanız garanti edilir, daha yeni makaleler gösterilmez.
Durumunuza içinde, bunu eklemeniz önerilir desc
için order by publish_date
en yeni yazılar istiyorsanız, o zaman en yeni makale ilk olacak.
Sonucu artan sırada tutmanız gerekiyorsa ve yine de sadece en yeni 10 makaleyi istiyorsanız, mysql'den sonucunuzu iki kez sıralamasını isteyebilirsiniz.
Aşağıdaki bu sorgu sonucu azalan şekilde sıralayacak ve sonucu 10 ile sınırlayacaktır (parantez içindeki sorgu). Hala azalan düzende sıralanacaktır ve bundan memnun değiliz, bu yüzden mysql'den bir kez daha sıralamasını istiyoruz. Şimdi son satırda en yeni sonuca sahibiz.
select t.article
from
(select article, publish_date
from table1
order by publish_date desc limit 10) t
order by t.publish_date asc;
Tüm sütunlara ihtiyacınız varsa, bu şekilde yapılır:
select t.*
from
(select *
from table1
order by publish_date desc limit 10) t
order by t.publish_date asc;
Veritabanını çeşitli şeyleri incelemek için el ile sorgu yazarken bu tekniği kullanıyorum. Bir üretim ortamında kullanmadım, ancak şimdi işaretlediğimde, ekstra sıralama performansı etkilemiyor.
publish_date
s eşit olursa , onlar tarafından sipariş vermek belirli sonuçlar vermez, yaniLIMIT
sayfalandırma için kullanırsanız , aynı öğeleri farklı sayfalarda elde edebileceğinizi unutmayın!