ANY و ALL (ANY, ALL)
«ANY و ALL (ANY, ALL)» برای مقایسه با خروجی یک «ساب کوئری (Subquery)» است. ANY یعنی شرط برای حداقل یک مقدار درست باشد. ALL یعنی شرط برای همه مقادیر درست باشد. مثل امتحان: ANY قبولی با یک پاسخ درست؛ ALL قبولی با همه پاسخ های درست.
اپراتور ANY
ANY یک مقدار بولی می دهد. اگر هر مقدارِ ساب کوئری شرط را پاس کند، نتیجه TRUE می شود.
سینتکس ANY
SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY (
SELECT column_name
FROM table_name
WHERE condition
);
مثال ANY: مقدار برابر با 10
اگر هر سفارش Quantity برابر 10 داشته باشد، نام محصول نمایش می شود.
SELECT ProductName
FROM Products
WHERE ProductID = ANY (
SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10
);
مثال ANY: مقدار بزرگ تر از 99
اگر هر سفارش Quantity بیش از 99 باشد، TRUE می شود.
SELECT ProductName
FROM Products
WHERE ProductID = ANY (
SELECT ProductID
FROM OrderDetails
WHERE Quantity > 99
);
مثال ANY: مقدار بزرگ تر از 1000
اگر هیچ سفارشی Quantity بالای 1000 نداشته باشد، نتیجه FALSE است.
SELECT ProductName
FROM Products
WHERE ProductID = ANY (
SELECT ProductID
FROM OrderDetails
WHERE Quantity > 1000
);
اپراتور ALL
ALL یک مقدار بولی می دهد. فقط وقتی TRUE می شود که همه مقادیرِ ساب کوئری شرط را پاس کنند.
سینتکس ALL با SELECT
SELECT ALL column_name(s)
FROM table_name
WHERE condition;
سینتکس ALL با WHERE/HAVING
SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL (
SELECT column_name
FROM table_name
WHERE condition
);
مثال ALL: همه نام های محصول
SELECT ALL معمولاً مثل SELECT است؛ فقط تأکیدی روی «همه» دارد.
SELECT ALL ProductName
FROM Products
WHERE TRUE;
مثال ALL: همه سفارش ها Quantity برابر 10
اگر حتی یک سفارش مقدار دیگری داشته باشد، نتیجه FALSE می شود.
SELECT ProductName
FROM Products
WHERE ProductID = ALL (
SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10
);
نکته: عملگر باید یکی از عملگرهای مقایسه باشد: =, <>, !=, >, >=, <, <=.
گام های عملی
- مسئله را ANY یا ALL تشخیص بده.
- ساب کوئری را بنویس و ستون مرتبط را برگردان.
- اپراتور مقایسه مناسب را انتخاب کن.
- شرط بیرونی را با ANY یا ALL ترکیب کن.
- اجرا کن و نتیجه را بررسی کن.
لینک های داخلی مفید
- EXISTS برای چکِ وجود رکورد.
- INSERT ... SELECT برای انتقال داده با کوئری.
- ANY و ALL مرور این صفحه با کلیدواژه تمرکزی.
جمع بندی سریع
- ANY: درست اگر یک مورد شرط را پاس کند.
- ALL: درست اگر همه موارد شرط را پاس کنند.
- با ساب کوئری و عملگر مقایسه می آید.
- SELECT ALL معمولاً مثل SELECT است.
- مثال ها را در ادیتور اجرا کن.