ใช้ Subquery ร่วมกับ ORDER BY ... DESC LIMIT 10 แล้วเรียงกลับ ASC เพื่อให้ลำดับถูกต้อง
สร้างตารางและข้อมูล 12 แถว
mysql> CREATE TABLE Last10RecordsDemo (id INT, name VARCHAR(100));
mysql> INSERT INTO Last10RecordsDemo VALUES
-> (1,'John'),(2,'Carol'),(3,'Bob'),(4,'Sam'),(5,'David'),(6,'Taylor'),
-> (7,'Sam'),(8,'Justin'),(9,'Ramit'),(10,'Smith'),(11,'Clark'),(12,'Johnson');
Query ดึง 10 แถวสุดท้าย
SELECT * FROM (
SELECT * FROM Last10RecordsDemo ORDER BY id DESC LIMIT 10
) AS sub ORDER BY id ASC;
ผลลัพธ์ (ได้แถว id 3-12):
+------+---------+ | id | name | +------+---------+ | 3 | Bob | | 4 | Sam | | 5 | David | | 6 | Taylor | | 7 | Sam | | 8 | Justin | | 9 | Ramit | | 10 | Smith | | 11 | Clark | | 12 | Johnson | +------+---------+
วิธีอื่น (MySQL 8.0+ ใช้ Window Function)
SELECT id, name FROM (
SELECT id, name, ROW_NUMBER() OVER (ORDER BY id DESC) AS rn
FROM Last10RecordsDemo
) t WHERE rn <= 10 ORDER BY id ASC;
คำอธิบาย: Subquery เรียง DESC ก่อน LIMIT 10 (ได้ 10 แถวสุดท้าย แต่เรียงกลับ) แล้ว Outer query เรียง ASC กลับมาให้ถูกต้อง