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

เรียงลำดับหลายคอลัมน์ด้วยคำสั่งเดียวใน MySQL

บทนำ

คำสั่ง ORDER BY ใน MySQL รองรับการระบุหลายคอลัมน์ โดยจะเรียงตามคอลัมน์แรกก่อน แล้วค่อยเรียงคอลัมน์ถัดไปภายในกลุ่มที่มีค่าเท่ากัน

ตัวอย่างการสร้างตารางและเพิ่มข้อมูล

mysql> CREATE TABLE DemoTable (
    -> Id INT,
    -> Value INT
    -> );
Query OK, 0 rows affected (0.68 sec)
mysql> INSERT INTO DemoTable VALUES(100, 85885);
mysql> INSERT INTO DemoTable VALUES(101, 885995474);
mysql> INSERT INTO DemoTable VALUES(100, 895943);

แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable;

ผลลัพธ์

+------+-----------+
| Id   | Value     |
+------+-----------+
| 100  | 85885     |
| 101  | 885995474 |
| 100  | 895943    |
+------+-----------+
3 rows in set (0.00 sec)

คำสั่งเรียงลำดับตาม Value จากมากไปน้อย

mysql> SELECT Id, Value FROM DemoTable ORDER BY Value DESC;

ผลลัพธ์

+------+-----------+
| Id   | Value     |
+------+-----------+
| 101  | 885995474 |
| 100  | 895943    |
| 100  | 85885     |
+------+-----------+
3 rows in set (0.00 sec)

การประยุกต์: เรียงหลายคอลัมน์

-- เรียง Id จากน้อยไปมาก แล้วค่อย Value จากมากไปน้อย
SELECT Id, Value FROM DemoTable ORDER BY Id ASC, Value DESC;

คำอธิบาย

  • ORDER BY col1, col2, col3 จะเรียง col1 ก่อน แล้วค่อย col2 ในกลุ่มที่ col1 เท่ากัน
  • แต่ละคอลัมน์สามารถระบุ ASC หรือ DESC แยกกันได้
  • ค่า NULL จะถูกจัดอยู่หน้าสุดสำหรับ ASC และท้ายสุดสำหรับ DESC