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

Sắp xếp 2 cột có NULL theo thứ tự thời gian với COALESCE trong MySQL

Sử dụng COALESCE(col1, col2) trong ORDER BY để lấy giá trị đầu tiên không NULL từ hai cột, sắp xếp theo giá trị đó.

Tạo bảng và dữ liệu có NULL

mysql> CREATE TABLE DemoTable (FirstName VARCHAR(100), LastName VARCHAR(100));
Query OK, 0 rows affected (1.39 sec)
mysql> INSERT INTO DemoTable VALUES('Sam', 'Brown'), (NULL, 'Smith'), ('David', 'Taylor'), ('Mike', NULL);
Query OK, 4 rows affected (0.25 sec)

Truy vấn ORDER BY COALESCE

mysql> SELECT * FROM DemoTable ORDER BY COALESCE(FirstName, LastName);

Kết quả (sắp xếp theo FirstName, nếu NULL thì lấy LastName):

+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| David     | Taylor   |
| Mike      | NULL     |
| Sam       | Brown    |
| NULL      | Smith    |
+-----------+----------+
4 rows in set (0.04 sec)

Giải thích:

  • David (FirstName='David') → sort key 'David'
  • Mike (FirstName='Mike') → sort key 'Mike'
  • Sam (FirstName='Sam') → sort key 'Sam'
  • NULL/ Smith (FirstName=NULL) → COALESCE lấy 'Smith' → sort key 'Smith'

Sắp xếp NULL cuối: ORDER BY (FirstName IS NULL), FirstName hoặc ORDER BY COALESCE(FirstName, 'zzzzzzzz').