การดึงข้อมูลหลายแถวพร้อมกันด้วย WHERE IN
คำสั่ง WHERE column IN (value1, value2, ...) ใช้เลือกแถวที่คอลัมน์มีค่าเท่ากับค่าใดค่าหนึ่งในรายการ ทำได้ในคำสั่ง SELECT เดียว
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (Id INT, Name VARCHAR(100));
Query OK, 0 rows affected (0.60 sec)
mysql> INSERT INTO DemoTable VALUES(100,'Chris');
mysql> INSERT INTO DemoTable VALUES(110,'David');
mysql> INSERT INTO DemoTable VALUES(120,'Robert');
mysql> INSERT INTO DemoTable VALUES(130,'Mike');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+------+--------+
| Id | Name |
+------+--------+
| 100 | Chris |
| 110 | David |
| 120 | Robert |
| 130 | Mike |
+------+--------+
4 rows in set (0.00 sec)
คำสั่งดึงแถวที่ Id เป็น 100, 120, 130
mysql> SELECT * FROM DemoTable WHERE Id IN (100, 120, 130);
ผลลัพธ์:
+------+--------+
| Id | Name |
+------+--------+
| 100 | Chris |
| 120 | Robert |
| 130 | Mike |
+------+--------+
3 rows in set (0.02 sec)
คำอธิบาย
IN (100, 120, 130): เทียบเท่าId = 100 OR Id = 120 OR Id = 130แต่อ่านง่ายกว่าและปรับปรุงได้ง่าย- MySQL จะปรับให้ใช้ Index ได้หากคอลัมน์ Id มี Index
- รองรับทุกชนิดข้อมูล: INT, VARCHAR, DATE, ฯลฯ
- สำหรับรายการเยอะมาก ควรพิจารณาใช้ Temporary Table หรือ JOIN แทน