Vấn đề
Cần lấy tất cả các bản ghi có PlayerName là NULL hoặc không phải NULL, nhưng loại trừ một giá trị cụ thể (ví dụ: 'Sam').
1. Tạo bảng
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
PlayerName varchar(40)
);
Query OK, 0 rows affected (0.50 sec)
2. Chèn dữ liệu
mysql> insert into DemoTable(PlayerName) values('Adam'); Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(PlayerName) values(NULL); Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(PlayerName) values('Sam'); Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(PlayerName) values('Mike'); Query OK, 1 row affected (0.08 sec)
3. Xem dữ liệu
mysql> select * from DemoTable;
+----+------------+ | Id | PlayerName | +----+------------+ | 1 | Adam | | 2 | NULL | | 3 | Sam | | 4 | Mike | +----+------------+ 4 rows in set (0.00 sec)
4. Truy vấn lọc
Sử dụng IS NULL để giữ bản ghi NULL, và != (hoặc <>) để loại trừ giá trị 'Sam':
mysql> select * from DemoTable
where PlayerName != 'Sam' or PlayerName IS NULL;
Kết quả:
+----+------------+ | Id | PlayerName | +----+------------+ | 1 | Adam | | 2 | NULL | | 4 | Mike | +----+------------+ 3 rows in set (0.00 sec)
Lưu ý: Toán tử != không khớp với NULL, nên cần thêm điều kiện OR PlayerName IS NULL.