SQL ANY and ALL Operators

در SQL عملگرهای ANY و ALL برای مقایسه مقدار یک ستون با مجموعه‌ای از مقادیر (که معمولاً از یک زیرکوئری برمی‌گردن) استفاده می‌شن.

🔹 SQL ANY Operator

  • شرط وقتی TRUE میشه که مقدار مورد نظر با حداقل یکی از مقادیر زیرکوئری تطابق داشته باشه.

  • شبیه: = ANY (…) یعنی «اگر با یکی از مقادیر برابر بود».

ساختار:

SELECT column_name FROM table_name WHERE column_name operator ANY (subquery);

مثال با ANY

جدول: Orders

order_idcustomer_idamount
11500
22300
33200

کوئری:

SELECT * FROM Orders WHERE amount > ANY (SELECT amount FROM Orders WHERE customer_id = 2);

📌 توضیح:

  • زیرکوئری مقدار 300 رو برمی‌گردونه.

  • شرط amount > ANY (300) یعنی "بیشتر از حداقل یکی از مقادیر" → در نتیجه سفارش‌هایی که مبلغشون بیشتر از 300 هست نمایش داده میشن.

خروجی:

order_idcustomer_idamount
11500

🔹 SQL ALL Operator

  • شرط وقتی TRUE میشه که مقدار مورد نظر با تمام مقادیر زیرکوئری مطابقت داشته باشه.

ساختار:

SELECT column_name FROM table_name WHERE column_name operator ALL (subquery);

مثال با ALL

SELECT * FROM Orders WHERE amount > ALL (SELECT amount FROM Orders WHERE customer_id = 2);

📌 توضیح:

  • زیرکوئری مقدار 300 رو برمی‌گردونه.

  • شرط amount > ALL (300) یعنی "بیشتر از همه مقادیر زیرکوئری" → پس فقط رکوردهایی که مبلغشون بیشتر از 300 هست نشون داده میشن.

خروجی:

order_idcustomer_idamount
11500


🔹 مثال کاربردی ترکیبی

اگر زیرکوئری چند مقدار برگردونه:

SELECT * FROM Orders WHERE amount < ANY (SELECT amount FROM Orders);

📌 یعنی هر سفارشی که مبلغش کمتر از حداقل یکی از مقادیر جدول باشه → پس تقریباً همه رکوردها برمی‌گردن به جز بزرگ‌ترین مبلغ.

خلاصه تفاوت ANY و ALL

  • > ANY → بزرگ‌تر از حداقل یکی از مقادیر

  • > ALL → بزرگ‌تر از همه مقادیر

  • < ANY → کوچک‌تر از حداقل یکی از مقادیر

  • < ALL → کوچک‌تر از همه مقادیر