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

ดึงหลายแถวในคำสั่ง MySQL เดียวด้วย WHERE IN

การดึงข้อมูลหลายแถวพร้อมกันด้วย 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 แทน