MySQL การใช้งานโอเปอเรเตอร์ ANY และ ALL

ANY และ ALL เป็นโอเปอเรเตอร์ใน SQL ที่ใช้เปรียบเทียบค่ากับผลลัพธ์จาก SUBQUERY (คำสั่งย่อย)

  • ANY ให้ผลลัพธ์เป็น TRUE ถ้าเงื่อนไขตรงกับค่าใดค่าหนึ่ง จาก SUBQUERY
  • ALL ให้ผลลัพธ์เป็น 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 เท่านั้น
แชร์เรื่องนี้