บทความนี้สาธิตวิธีเลือก 10 แถวแรกจากตาราง MySQL โดยเรียงลำดับก่อน (ASC) แล้วค่อยกลับมาจากมากไปน้อย (DESC) เพื่อให้ได้ 10 ค่าที่น้อยที่สุด แต่แสดงจากมากไปน้อย
สร้างตารางและข้อมูล 15 แถว
mysql> CREATE TABLE DemoTable683 (Page INT);
Query OK, 0 rows affected (0.83 sec)
mysql> INSERT INTO DemoTable683 VALUES(100), (101), (102), (103), (104), (105), (106), (107), (108), (109), (110), (111), (112), (113), (114);
คิวรีเลือก 10 แถวแรก (น้อยที่สุด) แล้วเรียงจากมากไปน้อย
mysql> SELECT * FROM (
SELECT * FROM DemoTable683 ORDER BY Page ASC LIMIT 10
) tbl ORDER BY Page DESC;
ผลลัพธ์ (100-109 เรียงจาก 109 ลง 100)
+------+
| Page |
+------+
| 109 |
| 108 |
| 107 |
| 106 |
| 105 |
| 104 |
| 103 |
| 102 |
| 101 |
| 100 |
+------+
คำอธิบาย:
- Subquery:
ORDER BY Page ASC LIMIT 10- เลือก 10 ค่าน้อยที่สุด (100-109) - Outer Query:
ORDER BY Page DESC- เรียง 10 ค่านั้นจากมากไปน้อย - ต้องใช้ Alias (
tbl) สำหรับ Subquery ใน FROM Clause
กรณีทั่วไป: หากต้องการแค่ 10 แถวแรกตามลำดับปกติ ใช้ SELECT * FROM table ORDER BY col LIMIT 10 เลย