MySQL การใช้งานคำสั่ง EXISTS

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 ครั้ง
แชร์เรื่องนี้