SQL EXISTS Operator


SQL EXISTS ใช้เพื่อตรวจสอบข้อมูลใน record ว่ามีจริงหรือไม่ใน subquery โดย EXISTSจะส่งค่า TRUE กลับมาในกรณีที่ subquery ส่งค่ากลับมาเพียง 1 ค่า หรือมากกว่า 1 ขึ้นไป

Subquery คือคำสั่ง SQL ที่ถูกฝังภายในคำสั่ง SQL อื่น ๆ เพื่อทำงานย่อยภายในคำสั่งหลัก หรือในคำสั่งอื่น ๆ อีกทีหนึ่ง ซึ่งจะทำให้คำสั่ง SQL ดูตัวต่อตัวและอ่านง่ายขึ้น
Subquery มักถูกใช้เพื่อดึงข้อมูลหรือค่าคำนวณที่จำเป็นสำหรับการทำงานของคำสั่ง SQL หลัก หรือในบางกรณีก็เพื่อการทำงานที่ซับซ้อนขึ้น เช่นการใช้ Subquery ในการหาค่ามากสุดหรือน้อยสุดในแถวของตารางหรือการเปรียบเทียบค่ากับผลลัพธ์ที่ได้จาก Subquery นั้น ๆ แล้วใช้ในการกรองข้อมูลในคำสั่ง SQL หลัก.

ตัวอย่างรูปแบบการใช้งาน EXISTS

SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

ตัวอย่างฐานข้อมูล

ตารางข้อมูลด้านล่างนี้เป็นตาราง “Products” ของ Northwind

ProductIDProductNameSupplierIDCategoryIDUnitPrice
1Chais1110 boxes x 20 bags18
2Chang1124 – 12 oz bottles19
3Aniseed Syrup1212 – 550 ml bottles10
4Chef Anton’s Cajun Seasoning2248 – 6 oz jars22
5Chef Anton’s Gumbo Mix2236 boxes21.35

และนี่คือตาราง “Suppliers”

SupplierIDSupplierNameContactNameAddressCityPostalCodeCountry
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonEC1 4SDUK
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA
3Grandma Kelly’s HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA
4Tokyo TradersYoshi Nagase9-8 Sekimai Musashino-shiTokyo100Japan

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

ตัวอย่างด้านล่างนี้จะคืนค่า TRUE เมื่อรายการของ suppliers มีราคาสินค้าน้อยกว่า 20

SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.supplierID AND Price < 20);

ตัวอย่างด้านล่างนี้จะคืนค่า TRUE เมื่อรายการของ suppliers มีราคาสินค้าเท่ากับ 22

SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.supplierID AND Price = 22);