การเลือกข้อมูลทั้งหมดยกเว้นแถวที่ระบุใน MySQL
ใช้ WHERE column IN (value1, value2, ...) เพื่อเลือกเฉพาะค่าที่ต้องการ (กลับกันกับ NOT IN)
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูล:
mysql> create table DemoTable (Id int, FirstName varchar(20)); mysql> insert into DemoTable values(100,'Larry'); mysql> insert into DemoTable values(10,'Chris'); mysql> insert into DemoTable values(110,'Robert'); mysql> insert into DemoTable values(90,'David');
ข้อมูลทั้งหมด:
+------+-----------+ | Id | FirstName | +------+-----------+ | 100 | Larry | | 10 | Chris | | 110 | Robert | | 90 | David | +------+-----------+
คิวรีเลือกเฉพาะ Id 110, 90, 100 (ข้าม Id 10):
mysql> select * from DemoTable where Id IN (110,90,100);
+------+-----------+ | Id | FirstName | +------+-----------+ | 100 | Larry | | 110 | Robert | | 90 | David | +------+-----------+
วิธีอื่น (ใช้ NOT IN):
SELECT * FROM DemoTable WHERE Id NOT IN (10);
ผลลัพธ์เหมือนกัน | NOT IN อ่านง่ายกว่าเมื่อต้องการ "ข้ามน้อย" | IN อ่านง่ายกว่าเมื่อต้องการ "เลือกน้อย"
ข้อควรระวังกับ NOT IN: หาก Subquery คืนค่า NULL จะทำให้ผลลัพธ์ว่างหมด | ใช้ NOT EXISTS แทนปลอดภัยกว่า