ใช้ Subquery กับ LIMIT เพื่อดึง N เรคคอร์ดล่าสุด แล้วเรียงกลับมาตามลำดับปกติ รูปแบบ:
SELECT * FROM (
SELECT * FROM yourTableName ORDER BY yourColumnName DESC LIMIT 20
) AS sub ORDER BY sub.yourColumnName ASC;
ตัวอย่าง: สินค้า 23 รายการ ดึง 20 รายการล่าสุด เรียง ID น้อยไปมาก
สร้างตารางและเพิ่มข้อมูล 23 เรคคอร์ด (ProductId 101-123)
คิวรีดึง 20 เรคคอร์ดล่าสุด เรียง ASC
mysql> SELECT * FROM (
-> SELECT * FROM ProductInformation ORDER BY ProductId DESC LIMIT 20
-> ) t1 ORDER BY t1.ProductId ASC;
ผลลัพธ์: ProductId 104 ถึง 123 (20 เรคคอร์ด เรียงน้อยไปมาก)
หากต้องการเรียง DESC (ใหม่สุดก่อน)
mysql> SELECT * FROM (
-> SELECT * FROM ProductInformation ORDER BY ProductId DESC LIMIT 20
-> ) t2 ORDER BY t2.ProductId DESC;
หลักการ: Subquery เรียง DESC แล้ว LIMIT 20 (ได้ 20 เรคคอร์ดล่าสุด) → Outer query เรียงกลับ ASC ตามต้องการ