ANY และ ALL เป็นโอเปอเรเตอร์ใน SQL ที่ใช้เปรียบเทียบค่ากับผลลัพธ์จาก SUBQUERY (คำสั่งย่อย)
ANYให้ผลลัพธ์เป็น TRUE ถ้าเงื่อนไขตรงกับค่าใดค่าหนึ่ง จากSUBQUERYALLให้ผลลัพธ์เป็น TRUE ก็ต่อเมื่อเงื่อนไขตรงกับค่าทั้งหมด จากSUBQUERY
รูปแบบคำสั่ง
รูปแบบการใช้งาน ANY
SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
(SELECT column_name
FROM table_name
WHERE condition);
รูปแบบการใช้งาน ALL
SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name
FROM table_name
WHERE condition);
ตัวอย่างการใช้งาน
ใช้ ANY แสดงรายการชำระเงินที่มากกว่าการชำระของลูกค้าคนใดคนหนึ่ง
SQL
SELECT payment_id, amount
FROM payment
WHERE amount > ANY (
SELECT amount
FROM payment
WHERE customer_id = 1
);- แสดงรายการ
amountที่มากกว่าการชำระเงินใด ๆ ของลูกค้า ID 1 - ถ้าใน
SUBQUERYมี 3 ค่าคือ 2.99, 5.99, 7.99 ผลลัพธ์จะเลือกแถวที่amount > 2.99
ใช้ ALL แสดงรายการชำระเงินที่มากกว่าทุกการชำระของลูกค้าคนที่ 1
SQL
SELECT payment_id, amount
FROM payment
WHERE amount > ALL (
SELECT amount
FROM payment
WHERE customer_id = 1
);- แสดงเฉพาะแถวที่
amountมากกว่าทุกการชำระของลูกค้า ID 1 - ถ้าใน
SUBQUERYมี 3 ค่าคือ 2.99, 5.99, 7.99 จะแสดงเฉพาะแถวที่amount > 7.99เท่านั้น