แนวคิด
แทนที่จะเขียน WHERE col = 'x' OR col = 'y' OR col = 'z' ให้ใช้ IN operator สะดวกและอ่านง่ายกว่า
รูปแบบคำสั่ง
SELECT * FROM yourTableName
WHERE yourColumnName IN ('value1', 'value2', 'value3', ...);
ตัวอย่างครบถ้วน
1. สร้างตาราง
mysql> create table InOperatorDemo
-> (
-> ClientId int
-> );
Query OK, 0 rows affected (0.52 sec)
2. เพิ่มข้อมูล
mysql> insert into InOperatorDemo values(101); Query OK, 1 row affected (0.19 sec) mysql> insert into InOperatorDemo values(110); Query OK, 1 row affected (0.11 sec) mysql> insert into InOperatorDemo values(120); Query OK, 1 row affected (0.17 sec) mysql> insert into InOperatorDemo values(230); Query OK, 1 row affected (0.11 sec) mysql> insert into InOperatorDemo values(270); Query OK, 1 row affected (0.15 sec) mysql> insert into InOperatorDemo values(300); Query OK, 1 row affected (0.14 sec)
3. ดูข้อมูลทั้งหมด
mysql> select * from InOperatorDemo;
+----------+ | ClientId | +----------+ | 101 | | 110 | | 120 | | 230 | | 270 | | 300 | +----------+
4. ใช้ IN operator ค้นหา 120, 270, 300
mysql> select * from InOperatorDemo where ClientId IN('120','270','300');
+----------+ | ClientId | +----------+ | 120 | | 270 | | 300 | +----------+
เคล็ดลับเพิ่มเติม
- NOT IN - หาค่าที่ไม่อยู่ในรายการ:
WHERE col NOT IN (1,2,3) - Subquery - ใช้ IN กับ subquery ได้:
WHERE id IN (SELECT user_id FROM orders) - Performance - IN ทำงานดีกับรายการสั้น สำหรับรายการยาวมาก ควรพิจารณา JOIN หรือ EXISTS
- NULL - IN จะไม่ match NULL ต้องใช้
IS NULLแยกต่างหาก
สรุป: IN operator ทำให้ query อ่านง่าย ประสิทธิภาพดี และลดโอกาสผิดพลาดจาก OR หลายตัว