وجود (Exists)
عملگر «Exists در SQL» وجود رکوردها را در «زیرپرس وجو (Subquery)» می سنجد. اگر زیرپرس وجو حداقل یک ردیف برگرداند، نتیجه TRUE می شود. WHERE روی ردیف ها فیلتر می کند؛ اما EXISTS فقط وجود نتیجه را چک می کند.
Exists در SQL چیست؟
با EXISTS می پرسی: «آیا چنین رکوردی وجود دارد؟». اگر بله، شرط برقرار است. بنابراین، سرعت خوب است؛ چون پایگاه داده معمولاً با اولین تطبیق برمی گردد.
قالب نوشتن (Syntax)
SELECT column_name(s);
FROM table_name;
WHERE EXISTS (
SELECT column_name;
FROM table_name;
WHERE condition;
);
مثال: تامین کننده با محصول ارزان
تامین کنندگانی را لیست کن که محصولی با قیمت کمتر از 20 دارند.
SELECT SupplierName;
FROM Suppliers;
WHERE EXISTS (
SELECT ProductName;
FROM Products;
WHERE Products.SupplierID = Suppliers.SupplierID AND Price < 20;
);
مثال: تامین کننده با قیمت برابر 22
این بار وجود محصولی با قیمت دقیقاً 22 را بررسی کن.
SELECT SupplierName;
FROM Suppliers;
WHERE EXISTS (
SELECT ProductName;
FROM Products;
WHERE Products.SupplierID = Suppliers.SupplierID AND Price = 22;
);
گام های عملی استفاده از EXISTS
- جدول بیرونی را در SELECT بنویس.
- شرط را با WHERE EXISTS شروع کن.
- داخل پرانتز، زیرپرس وجو را کامل کن.
- زیرپرس وجو را به جدول بیرونی مرتبط کن.
- شرط ها را تست کن و نتیجه را ببین.
نکته: زیرپرس وجو فقط وجود را می سنجد. SELECT * یا یک ستون فرقی ندارد.
پیوندهای مفید
برای مرور سریع Exists در SQL را ببین. همچنین بخش HAVING و اپراتورهای ANY/ALL را بررسی کن.
جمع بندی سریع
- EXISTS فقط وجود نتیجه را چک می کند.
- TRUE با اولین ردیفِ یافت شده برمی گردد.
- زیرپرس وجو باید به جدول بیرونی مرتبط شود.
- SELECT در زیرپرس وجو مهم نیست؛ وجود مهم است.
- برای فیلتر وجودی، EXISTS بسیار مناسب است.