เราสามารถใช้ตัวดำเนินการ MySQL EXIST เพื่อทดสอบการมีอยู่ของเร็กคอร์ดในเคียวรีย่อย กล่าวอีกนัยหนึ่ง เราสามารถพูดได้ว่าตัวดำเนินการ EXIST จะตรวจสอบว่าแบบสอบถามย่อยส่งคืนแถวใดๆ หรือไม่ ไวยากรณ์ของการใช้ตัวดำเนินการ EXIST กับแบบสอบถามย่อย MySQL มีดังนี้ -
ไวยากรณ์
WHERE EXISTS (Subquery)
นิพจน์ EXIST (ข้อความค้นหาย่อย) ด้านบนจะคืนค่า TRUE หากข้อความค้นหาย่อยส่งคืนอย่างน้อยหนึ่งแถว มิฉะนั้นจะคืนค่าเป็นเท็จ
ตัวอย่าง
เพื่อให้เข้าใจว่าเรากำลังใช้ข้อมูลจากตารางต่อไปนี้ -
mysql> Select * from Customers; +-------------+----------+ | Customer_Id | Name | +-------------+----------+ | 1 | Rahul | | 2 | Yashpal | | 3 | Gaurav | | 4 | Virender | +-------------+----------+ 4 rows in set (0.00 sec) mysql> Select * from Reservations; +------+-------------+------------+ | ID | Customer_id | Day | +------+-------------+------------+ | 1 | 1 | 2017-12-30 | | 2 | 2 | 2017-12-28 | | 3 | 2 | 2017-12-29 | | 4 | 1 | 2017-12-25 | | 5 | 3 | 2017-12-26 | +------+-------------+------------+ 5 rows in set (0.00 sec)
ต่อไปนี้คือแบบสอบถามย่อย MySQL ที่มี EXIST โดยใช้ตารางที่กล่าวถึงข้างต้น -
mysql> Select Name from customers WHERE EXISTS (SELECT * FROM Reservations WHERE Customers.customer_id = Reservations.customer_id); +---------+ | Name | +---------+ | Rahul | | Yashpal | | Gaurav | +---------+ 3 rows in set (0.06 sec)
แบบสอบถามด้านบนระบุชื่อของลูกค้าที่ทำการจอง