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

ใช้ IN operator ใน MySQL WHERE สำหรับค่าหลายค่า (x, y, z)


แนวคิด

แทนที่จะเขียน 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 หลายตัว