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

MySQL: ใช้ IN() สำหรับ SELECT WHERE ค่าอยู่ในชุดตัวเลือกหลายค่า

การใช้งานคำสั่ง 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 กับตารางชั่วคราวหรือตารางอ้างอิงแทน เพื่อประสิทธิภาพที่ดีกว่า