การใช้งานคำสั่ง IN() ในเงื่อนไข WHERE ของ MySQL
ออปอเรเตอร์ IN() ใช้สำหรับตรวจสอบว่าค่าของคอลัมน์อยู่ในรายการค่าที่ระบุหรือไม่ ทำให้เขียนเงื่อนไข OR หลายๆ ตัวสั้นลงและอ่านง่ายขึ้น
สร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable1624 (
-> ClientId int,
-> ClientName varchar(20)
-> );
Query OK, 0 rows affected (0.39 sec)
mysql> insert into DemoTable1624 values(101,'Chris Brown');
mysql> insert into DemoTable1624 values(102,'David Miller');
mysql> insert into DemoTable1624 values(103,'John Smith');
mysql> insert into DemoTable1624 values(104,'Carol Taylor');
mysql> insert into DemoTable1624 values(105,'Adam Smith');
ข้อมูลทั้งหมด
+----------+--------------+ | ClientId | ClientName | +----------+--------------+ | 101 | Chris Brown | | 102 | David Miller | | 103 | John Smith | | 104 | Carol Taylor | | 105 | Adam Smith | +----------+--------------+
คำสั่ง SELECT ด้วย IN()
mysql> select * from DemoTable1624 where ClientId in (101, 102, 104);
ผลลัพธ์
+----------+--------------+ | ClientId | ClientName | +----------+--------------+ | 101 | Chris Brown | | 102 | David Miller | | 104 | Carol Taylor | +----------+--------------+
เปรียบเทียบกับ OR
-- ใช้ IN() (แนะนำ)
WHERE ClientId IN (101, 102, 104)
-- ใช้ OR (ยาวและอ่านยากกว่า)
WHERE ClientId = 101 OR ClientId = 102 OR ClientId = 104
ประโยชน์ของ IN()
- โค้ดสั้น กระชับ อ่านง่าย
- ประสิทธิภาพดี (optimizer จัดการได้ดี)
- รองรับ subquery ได้:
WHERE id IN (SELECT id FROM other_table) - ทำงานกับทุกชนิดข้อมูล: ตัวเลข, สตริง, วันที่
หมายเหตุ: สำหรับรายการค่ามากมาย (หลายพันค่า) ควรพิจารณาใช้ JOIN กับตารางชั่วคราวหรือตารางอ้างอิงแทน เพื่อประสิทธิภาพที่ดีกว่า