همه (ALL)
«عملگر ALL» در PostgreSQL یعنی «شرط برای همه درست باشد». یعنی یک مقدار را با مجموعه ای از مقادیر مقایسه می کنی. اگر شرط برای تک تک آن مقادیر درست بود، نتیجه TRUE می شود. مثل آزمون کلاس: باید همه پاسخ ها درست باشند.
ALL چیست و کِی به درد می خورد؟
ALL یعنی «همه». زیربررسی (Subquery) یک SELECT داخل WHERE است. شرط فقط وقتی برقرار است که مقایسه برای تمام نتایج زیربررسی درست باشد. بنابراین، ALL سخت گیر است و هر استثنا نتیجه را رد می کند.
نکته: برای مقایسه ملایم تر، صفحه ANY را ببین. همچنین برای پیوند داخلی، عملگر ALL را به عنوان مرجع نگه دار.
نمونه: مقایسه product_id برابر با همه نتایج
می خواهیم بررسی کنیم آیا شناسه محصول با تمام شناسه های برگردانده شده برابر است. طبق منبع، این پرس وجو معمولاً FALSE می شود.
SELECT
products.product_name
FROM
products
WHERE
products.product_id = ALL (
SELECT
order_details.product_id
FROM
order_details
WHERE
order_details.quantity > 10
);
گام های عملی
- ستون هدف را در SELECT اصلی مشخص کن.
- در WHERE از ALL همراه با زیربررسی استفاده کن.
- در زیربررسی، فقط ستون لازم را برگردان.
- شرط ها را دقیق و ایندکس پسند بنویس.
هشدار: ALL سخت گیر است. اگر حتی یک مقدار شرط را نقض کند، نتیجه FALSE می شود. پس منطق مقایسه را آگاهانه انتخاب کن.
جمع بندی سریع
- ALL یعنی شرط برای همه مقادیر.
- هر استثنا نتیجه را باطل می کند.
- زیربررسی را کم حجم و ایندکس دار نگه دار.
- برای مقایسه نرم تر، ANY را بررسی کن.