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

Lấy bản ghi có NULL và giá trị khác dựa trên điều kiện phức tạp MySQL

Để lọc bản ghi dựa trên điều kiện phức tạp liên quan đến NULL và so sánh giá trị trên nhiều cột, bạn kết hợp IS NULL với != trong mệnh đề WHERE dùng AND/OR.

Ví dụ minh họa

Tạo bảng 3 cột:

mysql> create table DemoTable ( 
    value1 int, 
    value2 int, 
    value3 int 
);

Chèn dữ liệu:

mysql> insert into DemoTable values(20,40,null);
mysql> insert into DemoTable values(40,40,null);
mysql> insert into DemoTable values(null,null,null);

Hiển thị dữ liệu:

mysql> select * from DemoTable;

Kết quả:

+--------+--------+--------+
| value1 | value2 | value3 |
+--------+--------+--------+
| 20     | 40     | NULL   |
| 40     | 40     | NULL   |
| NULL   | NULL   | NULL   |
+--------+--------+--------+

Truy vấn lọc: (value1 IS NULL OR !=20) AND (value2 IS NULL OR !=20) AND (value3 IS NULL OR !=20)

mysql> select * from DemoTable 
where (value1 is null or value1!=20) 
  and (value2 is null or value2!=20) 
  and (value3 is null or value3!=20);

Kết quả:

+--------+--------+--------+
| value1 | value2 | value3 |
+--------+--------+--------+
| 40     | 40     | NULL   |
| NULL   | NULL   | NULL   |
+--------+--------+--------+

Giải thích logic từng hàng:

  • Hàng 1 (20,40,NULL): value1=20 → value1!=20 FALSE, value1 IS NULL FALSE → cả cụm 1 FALSE → loại
  • Hàng 2 (40,40,NULL): value1=40≠20 TRUE, value2=40≠20 TRUE, value3 NULL TRUE → tất cả TRUE → giữ
  • Hàng 3 (NULL,NULL,NULL): 3 cột đều NULL → 3 cụm IS NULL TRUE → giữ

Mẫu này dùng cho: lọc dữ liệu "khác một giá trị cụ thể HOẶC là NULL" trên nhiều cột cùng lúc.