Sử dụng NOT IN, OR và IS NULL trong cùng một truy vấn MySQL
Hãy tạo một bảng trước:
mysql> create table DemoTable793(
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName varchar(100)
);
Query OK, 0 rows affected (0.81 sec)
Chèn một số bản ghi vào bảng bằng lệnh insert:
mysql> insert into DemoTable793(StudentName) values('Adam');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable793(StudentName) values('Bob');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable793(StudentName) values(null);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable793(StudentName) values('Chris');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable793(StudentName) values('Robert');
Query OK, 1 row affected (1.03 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 DemoTable793;
Điều này sẽ tạo ra đầu ra sau:
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 1 | Adam | | 2 | Bob | | 3 | NULL | | 4 | Chris | | 5 | Robert | +-----------+-------------+ 5 rows in set (0.00 sec)
Truy vấn sau sử dụng NOT IN, OR và IS NULL trong cùng một truy vấn MySQL:
mysql> select * from DemoTable793 where StudentName NOT IN('Chris') OR StudentName IS NULL;
Điều này sẽ tạo ra đầu ra sau:
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 1 | Adam | | 2 | Bob | | 3 | NULL | | 5 | Robert | +-----------+-------------+ 4 rows in set (0.00 sec)
Giải thích: Điều kiện NOT IN('Chris') loại trừ Chris, OR StudentName IS NULL thêm lại các hàng có StudentName là NULL (vì NULL NOT IN (...) trả về UNKNOWN, không phải TRUE).