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

MySQL เรียงลำดับข้อมูลตาม Timestamp และ ENUM พร้อมกันอย่างไร?

สามารถใช้คำสั่ง 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 เท่านั้นก่อนเรียงลำดับ