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

Truy vấn MySQL so sánh và chỉ hiển thị hàng có giá trị NULL

Để so sánh hai cột và chỉ hiển thị các hàng mà cột thứ hai là NULL (dùng IFNULL chuyển NULL thành 0 để so sánh), bạn kết hợp IFNULL() trong điều kiện WHERE.

Ví dụ minh họa

Tạo bảng:

mysql> create table DemoTable ( 
    Value1 int, 
    Value2 int 
);

Chèn dữ liệu:

mysql> insert into DemoTable values(10,NULL);
mysql> insert into DemoTable values(20,40);
mysql> insert into DemoTable values(3,NULL);

Hiển thị dữ liệu:

mysql> select * from DemoTable;

Kết quả:

+--------+--------+
| Value1 | Value2 |
+--------+--------+
| 10     | NULL   |
| 20     | 40     |
| 3      | NULL   |
+--------+--------+

Truy vấn hiển thị hàng có Value2 là NULL

mysql> select * from DemoTable where Value1 > IFNULL(Value2,0);

Kết quả:

+--------+--------+
| Value1 | Value2 |
+--------+--------+
| 10     | NULL   |
| 3      | NULL   |
+--------+--------+

Giải thích:

  • IFNULL(Value2,0): Nếu Value2 là NULL → trả về 0, ngược lại giữ nguyên Value2
  • Value1 > IFNULL(Value2,0):
    • Hàng 1: 10 > 0 (TRUE) → hiển thị
    • Hàng 2: 20 > 40 (FALSE) → ẩn
    • Hàng 3: 3 > 0 (TRUE) → hiển thị

Lưu ý: Cách này dùng IFNULL để "biến" NULL thành 0 nhằm so sánh số học. Nếu chỉ muốn lọc NULL thuần túy, dùng WHERE Value2 IS NULL đơn giản và rõ nghĩa hơn.