SQL EXISTS Operator क्या हैं?
EXISTS ऑपरेटर का उपयोग यह जांचने के लिए किया जाता है कि सबक्वेरी में कोई रिकॉर्ड मौजूद है या नहीं।
यदि सबक्वेरी एक या अधिक रिकॉर्ड लौटाती है तो EXISTS ऑपरेटर TRUE लौटाता है।
मौजूद वाक्यविन्यास
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);
प्रदर्शन डेटाबेस
नीचे नॉर्थविंड नमूना डेटाबेस में "उत्पाद" तालिका से एक चयन दिया गया है:
उत्पाद तालिका
+-----------+------------------------------+------------+------------+-----------------------+-------+
| ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
+-----------+------------------------------+------------+------------+-----------------------+-------+
| 1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18 |
| 2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19 |
| 3 | Aniseed Syrup | 1 | 2 | 12 - 550 ml bottles | 10 |
| 4 | Chef Anton's Cajun Seasoning | 2 | 2 | 48 - 6 oz jars | 22 |
| 5 | Chef Anton's Gumbo Mix | 2 | 2 | 36 boxes | 21.35 |
+-----------+------------------------------+------------+------------+-----------------------+-------+
और "आपूर्तिकर्ता" तालिका से एक चयन:
आपूर्तिकर्ता तालिका
+------------+-----------------------------+-------------------+---------------------+-------------+------------+---------+
| SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country |
+------------+-----------------------------+-------------------+---------------------+-------------+------------+---------+
| 1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | London | EC1 4SD | UK |
| 2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA |
| 3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA |
| 4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai... | Tokyo | 100 | Japan |
+------------+-----------------------------+-------------------+---------------------+-------------+------------+---------+
SQL के उदाहरण मौजूद हैं
निम्नलिखित SQL कथन सत्य लौटाता है और उन आपूर्तिकर्ताओं को सूचीबद्ध करता है जिनके उत्पाद की कीमत 20 से कम है:
उदाहरण
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products
WHERE Products.SupplierID = Suppliers.supplierID AND Price < 20);
निष्कर्ष
निम्नलिखित SQL कथन सत्य लौटाता है और उन आपूर्तिकर्ताओं को सूचीबद्ध करता है जिनके उत्पाद की कीमत 22 के बराबर है:
उदाहरण
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products
WHERE Products.SupplierID = Suppliers.supplierID AND Price = 22);
निष्कर्ष
EXISTS कैसे काम करता है
मुख्य क्वेरी प्रारंभ करता है
प्रत्येक पंक्ति को आपूर्तिकर्ता तालिका से ऊपर देखा जाता है
SELECT SupplierName FROM Suppliers
सबक्वेरी निष्पादित है
प्रत्येक आपूर्तिकर्ता के लिए उत्पाद तालिका में मिलान रिकॉर्ड की जाँच की जाती है
WHERE EXISTS (SELECT ... WHERE Products.SupplierID = Suppliers.supplierID)
परिणाम का मूल्यांकन किया जाता है
यदि सबक्वेरी एक या अधिक पंक्तियाँ लौटाती है तो EXISTS सत्य लौटाता है
अंतिम परिणाम
केवल सत्य लौटाने वाले आपूर्तिकर्ताओं को ही अंतिम परिणाम में जोड़ा जाता है
केवल आपूर्तिकर्ता का नाम लौटाया जाएगा
EXISTS बनाम IN तुलना
EXISTS Operator
- booleanमान लौटाता है (सही/गलत)
- सबक्वेरी परिणामअस्तित्वपरीक्षण
- एक बार पहला मिलान रिकॉर्ड मिल जाएबंद हो जाता है
- बड़े डेटाबेस के लिएऔर अधिक कुशल
- सहसंबद्ध उपश्रेणियों के साथ अच्छा काम करता है
SELECT name
FROM customers c
WHERE EXISTS (
SELECT 1
FROM orders o
WHERE o.customer_id = c.id
);
IN Operator
- मूल्यों कासूचीपरीक्षण
- मूल्य सूची मेंवहाँ हैके रूप में परीक्षण
- सभीपरिणामों का मूल्यांकन भी करता है
- संक्षिप्त मूल्य सूचियों के लिए उपयुक्त
- स्थिर मान सूचियों के साथ अच्छा काम करता है
SELECT name
FROM customers
WHERE id IN (
SELECT customer_id
FROM orders
);
शैली के उदाहरण
ग्राहक ऑर्डर दे रहे हैं
ऐसे ग्राहक खोजें जिन्होंने कम से कम एक ऑर्डर दिया हो
SELECT CustomerName
FROM Customers c
WHERE EXISTS (
SELECT 1
FROM Orders o
WHERE o.CustomerID = c.CustomerID
);
वे आपूर्तिकर्ता जिन्हें उत्पाद बेचे जाते हैं
उन आपूर्तिकर्ताओं को ढूंढें जिन्होंने कम से कम एक उत्पाद बेचा है
SELECT SupplierName
FROM Suppliers s
WHERE EXISTS (
SELECT 1
FROM Products p
WHERE p.SupplierID = s.SupplierID
AND p.UnitsInStock > 0
);
कर्मचारी बचत
ऐसे कर्मचारियों को ढूंढना जिनके पास कम से कम एक बचत हो
SELECT EmployeeName
FROM Employees e
WHERE EXISTS (
SELECT 1
FROM Territories t
WHERE t.EmployeeID = e.EmployeeID
);
NOT EXISTS Operator
NOT EXISTS ऑपरेटर EXISTS का ऋणात्मक है। जब सबक्वेरी कोई रिकॉर्ड नहीं लौटाती तो TRUE लौटाता है।
NOT EXISTS उदाहरण
SELECT SupplierName
FROM Suppliers
WHERE NOT EXISTS (SELECT ProductName FROM Products
WHERE Products.SupplierID = Suppliers.supplierID);
निष्कर्ष
आवेदन पत्र:
NOT EXISTS आपको उन आपूर्तिकर्ताओं को ढूंढने की अनुमति देता है जिनके पास कोई उत्पाद नहीं है। यह "लापता रिकॉर्ड" ढूंढने के लिए उपयोगी है।
प्रदर्शन लाभ
पहले मिलान रिकॉर्ड पर रुकता है
EXISTS पहला मिलान रिकॉर्ड मिलने पर सबक्वेरी का निष्पादन समाप्त कर देता है
कम मेमोरी उपयोग
संपूर्ण परिणाम सेट को संग्रहीत करने की कोई आवश्यकता नहीं है, केवल बूलियन मान
कोड का कुशल उपयोग
EXISTS सहसंबद्ध उपश्रेणियों में अनुक्रमणिका का कुशल उपयोग करता है