ใช้ WHERE column IN (value1, value2, ...) เพื่อส่งหลายค่าเข้าไปใน Query
สร้างตารางและข้อมูล
mysql> CREATE TABLE PassingAnArrayDemo (id INT, Firstname VARCHAR(100));
mysql> INSERT INTO PassingAnArrayDemo VALUES
-> (1,'John'),(2,'Carol'),(3,'Smith'),(4,'Bob'),(5,'Johnson'),(6,'David'),(7,'Sam'),(8,'Jessica');
Query ด้วย IN
mysql> SELECT * FROM PassingAnArrayDemo WHERE id IN (1, 3, 6);
ผลลัพธ์:
+------+-----------+ | id | Firstname | +------+-----------+ | 1 | John | | 3 | Smith | | 6 | David | +------+-----------+
ใช้กับ String (ต้องมี Quote)
SELECT * FROM PassingAnArrayDemo WHERE Firstname IN ('John', 'Bob', 'Sam');
ข้อจำกัดและแนวทาง
- จำนวนค่าใน IN: MySQL ไม่มี Hard Limit แต่ Query ใหญ่เกิน
max_allowed_packetจะ Error - Performance: IN (..., ..., ...) หลายพันค่า → ช้า ควรใช้ Temporary Table หรือ JOIN แทน
- Prepared Statement: ไม่สามารถ Bind Array เข้า IN ได้โดยตรง ต้องสร้าง Placeholders แบบ Dynamic
แนวทาง Production: สร้าง Temporary Table โหลดค่า Array เข้าไป แล้ว JOIN กับตารางหลัก → เร็วกว่า, Index ได้, Parameterize ได้