ใน MySQL สามารถใช้หมายเลขตำแหน่งคอลัมน์ (Positional Number) ในคำสั่ง ORDER BY แทนชื่อคอลัมน์ได้ โดย 1 = คอลัมน์แรก, 2 = คอลัมน์ที่สอง เป็นต้น
รูปแบบคำสั่ง
SELECT * FROM yourTableName ORDER BY 1 DESC LIMIT yourLimitValue;
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูล:
mysql> create table DemoTable1325 (Id int, Name varchar(20)); mysql> insert into DemoTable1325 values(100,'Chris'),(101,'Bob'),(120,'David'),(115,'Sam'),(130,'Carol'),(150,'Mike');
ข้อมูลต้นฉบับ:
+------+-------+ | Id | Name | +------+-------+ | 100 | Chris | | 101 | Bob | | 120 | David | | 115 | Sam | | 130 | Carol | | 150 | Mike | +------+-------+
คำสั่งเรียงคอลัมน์แรก (Id) จากมากไปน้อย จำกัด 4 แถว
mysql> select * from DemoTable1325 order by 1 DESC LIMIT 4;
ผลลัพธ์
+------+-------+ | Id | Name | +------+-------+ | 150 | Mike | | 130 | Carol | | 120 | David | | 115 | Sam | +------+-------+
ข้อควรระวัง:
- ใช้ได้กับ
ORDER BY,GROUP BYแต่ ไม่แนะนำ ให้ใช้ใน Production code - หากเปลี่ยนลำดับคอลัมน์ใน SELECT (หรือเพิ่มคอลัมน์) หมายเลขจะชี้ผิดเป้าหมาย
- ควรใช้ชื่อคอลัมน์ชัดเจน (
ORDER BY Id DESC) เพื่อความชัดเจนและปลอดภัย - ฟีเจอร์นี้เหมาะสำหรับการทดสอบหรือ Ad-hoc query รวดเร็ว