บทความนี้สาธิตการรวมเงื่อนไข NOT IN, OR, และ IS NULL ในคำสั่ง WHERE เดียวกัน เพื่อกรองข้อมูลที่ไม่ใช่ค่าบางค่า หรือเป็น NULL
สร้างตารางและข้อมูลทดสอบ (มีค่า NULL)
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');
mysql> INSERT INTO DemoTable793(StudentName) VALUES('Bob');
mysql> INSERT INTO DemoTable793(StudentName) VALUES(NULL);
mysql> INSERT INTO DemoTable793(StudentName) VALUES('Chris');
mysql> INSERT INTO DemoTable793(StudentName) VALUES('Robert');
คิวรีกรอง: ไม่ใช่ Chris หรือ เป็น NULL
mysql> SELECT * FROM DemoTable793
WHERE StudentName NOT IN('Chris') OR StudentName IS NULL;
ผลลัพธ์
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1 | Adam |
| 2 | Bob |
| 3 | NULL |
| 5 | Robert |
+-----------+-------------+
คำอธิบาย:
NOT IN('Chris')- ไม่ใช่ Chris (Adam, Bob, Robert, และ NULL)OR StudentName IS NULL- หรือเป็น NULL- สำคัญ:
NULL NOT IN ('Chris')ผลลัพธ์คือUNKNOWN(ไม่ใช่ TRUE) ดังนั้นแถว NULL จะไม่ถูกเลือกโดย NOT IN เพียงอย่างเดียว → ต้องเพิ่มOR IS NULLเข้าไป - ผลลัพธ์: Adam, Bob, NULL, Robert (Chris ถูกตัดออก)