ใช้ Subquery: ดึง 3 แถวสุดท้ายด้วย ORDER BY ... DESC LIMIT 3 แล้วค่อยเรียงกลับ ASC ด้วย Outer query
สร้างตารางและเพิ่มข้อมูล 8 แถว
mysql> CREATE TABLE DemoTable (
ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName VARCHAR(100)
);
mysql> INSERT INTO DemoTable(ClientName) VALUES
('Larry'), ('Chris'), ('Bob'), ('David'), ('Carol'), ('Robert'), ('Sam'), ('Mike');
ดูข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
+----------+------------+
| ClientId | ClientName |
+----------+------------+
| 1 | Larry |
| 2 | Chris |
| 3 | Bob |
| 4 | David |
| 5 | Carol |
| 6 | Robert |
| 7 | Sam |
| 8 | Mike |
+----------+------------+
คำสั่ง: ดึง 3 แถวสุดท้าย (Id 6,7,8) แล้วเรียง Id ขึ้น冇
mysql> SELECT * FROM (
-> SELECT * FROM DemoTable
-> ORDER BY ClientId DESC
-> LIMIT 3
-> ) tbl
-> ORDER BY ClientId ASC;
ผลลัพธ์
+----------+------------+
| ClientId | ClientName |
+----------+------------+
| 6 | Robert |
| 7 | Sam |
| 8 | Mike |
+----------+------------+
คำอธิบาย:
- Inner query: เรียง DESC (8,7,6,5...) จำกัด 3 แถว → ได้ Id 8,7,6
- Outer query: เรียง ASC → ได้ Id 6,7,8
MySQL 8.0+: ใช้ WITH cte AS (...) แทน Subquery ก็ได้