Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ใช้ NOT IN, OR, IS NULL ร่วมกันใน WHERE Clause ของ MySQL

บทความนี้สาธิตการรวมเงื่อนไข 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 ถูกตัดออก)