Kết hợp NOT IN để loại trừ và IS NULL để giữ lại giá trị NULL trong cùng một truy vấn.
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable793(
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(100)
);
Query OK, 0 rows affected (0.81 sec)
mysql> INSERT INTO DemoTable793(StudentName) VALUES
('Adam'), ('Bob'), (NULL), ('Chris'), ('Robert');
Query OK, 5 rows affected
Truy vấn loại trừ 'Chris' nhưng giữ NULL
mysql> SELECT * FROM DemoTable793
WHERE StudentName NOT IN('Chris') OR StudentName IS NULL;
Kết quả:
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 1 | Adam | | 2 | Bob | | 3 | NULL | | 5 | Robert | +-----------+-------------+
Lưu ý quan trọng: NOT IN không khớp với NULL (vì NULL NOT IN (...) trả về UNKNOWN, không phải TRUE). Do đó cần thêm OR StudentName IS NULL để giữ lại hàng NULL.