ใน 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) ซึ่งเป็นการสาธิตหลักการทำงาน พร้อมใช้งานจริงกับเงื่อนไขซับซ้อนกว่านี้