Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ดึง 20 เรคคอร์ดล่าสุด แล้วเรียง ASC ใน MySQL

ใช้ 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 ตามต้องการ