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

ใช้ Subquery กับ IN() ใน MySQL เพื่อดึงผลลัพธ์หลายแถว

ใน MySQL สามารถใช้ Subquery ภายในเงื่อนไข IN() เพื่อกรองข้อมูลจากผลลัพธ์ของคำสั่ง SELECT อื่นได้ ซึ่งมีประโยชน์เมื่อต้องการเปรียบเทียบค่ากับชุดข้อมูลที่ได้จากการค้นหา

ตัวอย่างการใช้งาน

สร้างตาราง DemoTable1317 และเพิ่มข้อมูล:

mysql> create table DemoTable1317 (Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20));
mysql> insert into DemoTable1317(Name) values('Chris Brown');
mysql> insert into DemoTable1317(Name) values('John Doe');
mysql> insert into DemoTable1317(Name) values('Adam Smith');
mysql> insert into DemoTable1317(Name) values('John Smith');
mysql> insert into DemoTable1317(Name) values('David Miller');
mysql> insert into DemoTable1317(Name) values('Carol Taylor');

ข้อมูลทั้งหมด:

+----+--------------+
| Id | Name         |
+----+--------------+
| 1  | Chris Brown  |
| 2  | John Doe     |
| 3  | Adam Smith   |
| 4  | John Smith   |
| 5  | David Miller |
| 6  | Carol Taylor |
+----+--------------+

คำสั่งใช้ Subquery กับ IN()

mysql> select Name from DemoTable1317 where Id IN (select Id from DemoTable1317);

ผลลัพธ์

+--------------+
| Name         |
+--------------+
| Chris Brown  |
| John Doe     |
| Adam Smith   |
| John Smith   |
| David Miller |
| Carol Taylor |
+--------------+

คำอธิบาย: Subquery (select Id from DemoTable1317) ส่งคืนชุดค่า Id ทั้งหมด แล้วคำสั่งหลักกรองเฉพาะแถวที่ Id อยู่ในชุดนั้น ในตัวอย่างนี้เทียบเท่า WHERE Id IN (1,2,3,4,5,6) ซึ่งเป็นการสาธิตหลักการทำงาน พร้อมใช้งานจริงกับเงื่อนไขซับซ้อนกว่านี้