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

เรียงลำดับ ASC และวางค่า NULL ไว้ท้ายสุดใน MySQL

การจัดลำดับข้อมูลพร้อมวาง NULL และค่าว่างไว้ท้าย

ใช้ CASE ภายใน ORDER BY เพื่อกำหนดลำดับความสำคัญ: ค่าปกติ -> ค่าว่าง ('') -> NULL

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

mysql> CREATE TABLE DemoTable1937 (Name VARCHAR(20));
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO DemoTable1937 VALUES('Chris');
mysql> INSERT INTO DemoTable1937 VALUES(NULL);
mysql> INSERT INTO DemoTable1937 VALUES('Adam');
mysql> INSERT INTO DemoTable1937 VALUES('John');
mysql> INSERT INTO DemoTable1937 VALUES('');
mysql> INSERT INTO DemoTable1937 VALUES(NULL);
mysql> INSERT INTO DemoTable1937 VALUES('Bob');

ข้อมูลก่อนเรียง

mysql> SELECT * FROM DemoTable1937;
+-------+
| Name  |
+-------+
| Chris |
| NULL  |
| Adam  |
| John  |
|       |
| NULL  |
| Bob   |
+-------+

คำสั่ง SQL เรียง ASC วาง NULL/ค่าว่างท้าย

mysql> SELECT * FROM DemoTable1937
    -> ORDER BY CASE
    ->   WHEN Name IS NULL THEN 100
    ->   WHEN Name = '' THEN 101
    ->   ELSE 103
    -> END DESC,
    -> Name ASC;

ผลลัพธ์:

+-------+
| Name  |
+-------+
| Adam  |
| Bob   |
| Chris |
| John  |
|       |
| NULL  |
| NULL  |
+-------+

คำอธิบาย: CASE กำหนดค่าความสำคัญ: NULL=100, ว่าง=101, ปกติ=103 เรียง DESC ทำให้ค่าปกติ (103) อยู่บนสุด ตามด้วยค่าว่าง แล้ว NULL สุดท้าย ภายในกลุ่มเดียวกัน เรียงตาม Name ASC