ได้ครับ MySQL อนุญาตให้ใช้ IN() กับค่าเพียงค่าเดียว ทำงานเหมือนกับการใช้ = ทุกประการ
ตัวอย่างการใช้งาน
1. สร้างตารางทดสอบ
mysql> CREATE TABLE DemoTable (
FirstName VARCHAR(20)
);
Query OK, 0 rows affected (0.65 sec)
2. เพิ่มข้อมูลทดสอบ
mysql> INSERT INTO DemoTable VALUES('Chris');
Query OK, 1 row affected (0.42 sec)
mysql> INSERT INTO DemoTable VALUES('David');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Mike');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable VALUES('Bob');
Query OK, 1 row affected (0.08 sec)
3. แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable; +-----------+ | FirstName | +-----------+ | Chris | | David | | Mike | | Bob | +-----------+
4. ใช้ IN() กับค่าเดี่ยว
mysql> SELECT * FROM DemoTable WHERE FirstName IN('Mike');
5. ผลลัพธ์
+-----------+ | FirstName | +-----------+ | Mike | +-----------+
เปรียบเทียบ IN() กับ =
| คำสั่ง | ผลลัพธ์ | เหมาะสำหรับ |
|---|---|---|
WHERE col IN ('value') | เท่ากับ WHERE col = 'value' | โค้ดที่สร้างไดนามิก (Dynamic SQL) อาจส่งค่าเดี่ยวหรือหลายค่าได้ |
WHERE col IN ('val1','val2') | ค้นหาหลายค่า | ค้นหาหลายค่าคงที่ |
ข้อดีของการใช้ IN() แบบค่าเดี่ยว
- เขียนโค้ดสำเร็จรูป (Prepared Statement) ได้ง่ายขึ้น ไม่ต้องแบ่งกรณี 1 ค่า หรือหลายค่า
- ลดโอกาสผิดพลาดจากการสร้าง Query String แบบ Manual
- อ่านโค้ดง่ายขึ้นเมื่อมีการสร้างเงื่อนไขแบบไดนามิก
สรุป
ใช้ IN() กับค่าเดี่ยวได้ไม่มีปัญหา ทำงานเหมือน = ทุกประการ เหมาะสำหรับการเขียน Query แบบไดนามิกที่จำนวนค่าอาจเปลี่ยนแปลงได้