Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Truy vấn giá trị không rỗng của hàng trước theo thứ tự tăng dần sau đó hiển thị giá trị NULL

Truy vấn giá trị không rỗng của hàng trước theo thứ tự tăng dần sau đó hiển thị giá trị NULL

Để thực hiện việc này, hãy sử dụng ORDER BY ISNULL(). Hãy tạo một bảng trước:

mysql> create table DemoTable669 (
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentScore int
);
Query OK, 0 rows affected (0.55 sec)

Chèn một số bản ghi vào bảng bằng lệnh insert:

mysql> insert into DemoTable669(StudentScore) values(45);
Query OK, 1 row affected (0.80 sec)
mysql> insert into DemoTable669(StudentScore) values(null);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable669(StudentScore) values(89);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable669(StudentScore) values(null);
Query OK, 1 row affected (0.15 sec)

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select:

mysql> select * from DemoTable669;

Điều này sẽ tạo ra đầu ra sau:

+-----------+--------------+
| StudentId | StudentScore |
+-----------+--------------+
| 1         | 45           |
| 2         | NULL         |
| 3         | 89           |
| 4         | NULL         |
+-----------+--------------+
4 rows in set (0.00 sec)

Truy vấn sau hiển thị các giá trị không rỗng theo thứ tự tăng dần. Các giá trị NULL sẽ được hiển thị sau đó:

mysql> select * from DemoTable669 ORDER BY ISNULL(StudentScore), StudentScore;

Điều này sẽ tạo ra đầu ra sau:

+-----------+--------------+
| StudentId | StudentScore |
+-----------+--------------+
| 1         | 45           |
| 3         | 89           |
| 2         | NULL         |
| 4         | NULL         |
+-----------+--------------+
4 rows in set (0.00 sec)

Giải thích: ISNULL(StudentScore) trả về 1 cho NULL, 0 cho không NULL. Sắp xếp ASC sẽ đưa 0 (không NULL) lên trước, sau đó mới đến 1 (NULL). Trong nhóm không NULL, sắp xếp thêm theo StudentScore tăng dần.