สามารถใช้คำสั่ง ORDER BY ร่วมกับฟังก์ชัน DATE() เพื่อจัดการข้อมูลประเภท DATE และ ENUM พร้อมกันได้
ตัวอย่างการสร้างตารางและข้อมูลทดสอบ
1. สร้างตาราง DemoTable
mysql> CREATE TABLE DemoTable (
JoiningDate DATE,
Status ENUM('Good','Excellent','Bad')
);
Query OK, 0 rows affected (0.58 sec)
2. เพิ่มข้อมูลทดสอบ
mysql> INSERT INTO DemoTable VALUES('2019-01-21','Excellent');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable(Status) VALUES('Bad');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable(Status) VALUES('Good');
Query OK, 1 row affected (0.13 sec)
3. แสดงข้อมูลก่อนเรียงลำดับ
mysql> SELECT * FROM DemoTable; +-------------+-----------+ | JoiningDate | Status | +-------------+-----------+ | 2019-01-21 | Excellent | | NULL | Bad | | NULL | Good | +-------------+-----------+
4. คำสั่งเรียงลำดับตามวันที่ (ASC) แล้วตามสถานะ (ASC)
mysql> SELECT * FROM DemoTable
-> ORDER BY DATE(JoiningDate) ASC, Status ASC;
5. ผลลัพธ์หลังเรียงลำดับ
+-------------+-----------+ | JoiningDate | Status | +-------------+-----------+ | NULL | Good | | NULL | Bad | | 2019-01-21 | Excellent | +-------------+-----------+
ข้อสังเกตสำคัญ
- ค่า
NULLในDATEจะถูกจัดลำดับมาก่อนค่าที่มีข้อมูล (เมื่อใช้ ASC) - ลำดับของ
ENUMจะขึ้นอยู่กับลำดับที่กำหนดไว้ตอนสร้างตาราง ('Good','Excellent','Bad') - ใช้
DATE()เพื่อแปลงค่า datetime ให้เป็น date เท่านั้นก่อนเรียงลำดับ