EXISTS เป็นคำสั่งใน SQL ที่ใช้เพื่อตรวจสอบว่ามีผลลัพธ์จาก SUBQUERY (คำสั่งย่อย) หรือไม่
- ถ้าผลลัพธ์ของ
SUBQUERYมีอย่างน้อย 1 แถวEXISTSจะให้ค่าเป็น TRUE - ถ้าไม่มีผลลัพธ์เลย จะให้ค่าเป็น FALSE
รูปแบบคำสั่ง
SELECT column1
FROM table1
WHERE EXISTS (
SELECT 1
FROM table2
WHERE condition
);
SELECT 1ไม่จำเป็นต้องระบุคอลัมน์จริง เพราะสนใจแค่ว่า “มีแถวหรือไม่”- คำสั่ง
EXISTSจะหยุดทำงานทันทีเมื่อพบแถวแรก
ตัวอย่างการใช้งาน
แสดงลูกค้าที่เคยทำรายการชำระเงิน
SQL
SELECT first_name, last_name
FROM customer c
WHERE EXISTS (
SELECT 1
FROM payment p
WHERE p.customer_id = c.customer_id
);- ตรวจสอบว่า มีข้อมูลใน
paymentที่customer_idตรงกับลูกค้าแต่ละคนหรือไม่ - ถ้ามี ให้แสดงชื่อของลูกค้าคนนั้น
- ถ้าไม่มี ให้ข้ามไป
แสดงรายการภาพยนตร์ที่เคยถูกเช่า
SQL
SELECT title
FROM film f
WHERE EXISTS (
SELECT 1
FROM inventory i
JOIN rental r ON i.inventory_id = r.inventory_id
WHERE i.film_id = f.film_id
);- แสดงเฉพาะชื่อภาพยนตร์ที่มีประวัติถูกเช่าอย่างน้อย 1 ครั้ง