SQL IN ऑपरेटर
WHERE क्लास में IN ऑपरेटरअनेक मानआपको निर्दिष्ट करने की अनुमति देता है
IN ऑपरेटर एकाधिक OR शर्तों का संक्षिप्त रूप है।
उदाहरण
'जर्मनी', 'फ़्रांस', या 'यूके' से सभी ग्राहकों को वापस लौटाने के लिए:
SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');
नोट:
एकाधिक OR शर्तों को लिखने की तुलना में IN ऑपरेटर सरल और आसान है।
वाक्यविन्यास में
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
प्रदर्शन डेटाबेस
नीचे उदाहरणों में प्रयुक्त ग्राहक तालिका से एक चयन दिया गया है:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
NOT IN
IN ऑपरेटर से पहले NOT कीवर्ड का उपयोग करके किसी सूची में मानकुछ नहींआप सभी रिकॉर्ड वापस कर दें.
उदाहरण
'जर्मनी', 'फ्रांस' या 'यूके' से बाहर के सभी ग्राहकों को वापस करने के लिए:
SELECT * FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');
कुछ देशों को छोड़कर
निर्दिष्ट देशों को छोड़कर अन्य सभी
SELECT * FROM Customers
WHERE Country NOT IN ('USA', 'Canada');
कुछ शहरों को छोड़कर
निर्दिष्ट शहरों को छोड़कर अन्य सभी
SELECT * FROM Customers
WHERE City NOT IN ('London', 'Paris', 'Berlin');
IN (SELECT)
IN का उपयोग WHERE क्लॉज में सबक्वेरी के साथ भी किया जा सकता है।
सबक्वेरी के साथ, सभी रिकॉर्ड सबक्वेरी के अंत में मुख्य क्वेरी से पुनर्प्राप्त किए जा सकते हैं।
उदाहरण
ऑर्डर तालिका में ऑर्डर रखने वाले सभी ग्राहकों को वापस करने के लिए:
SELECT * FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders);
महत्वपूर्ण नोट:
सबक्वेरीज़ जटिल फ़िल्टरिंग के लिए उपयोगी हैं। वे एक टेबल से दूसरी टेबल पर जुड़ने में मदद करते हैं।
NOT IN (SELECT)
उपरोक्त उदाहरण में परिणाम में 74 रिकॉर्ड मिले जिसका अर्थ है कि 17 ग्राहकों ने कोई ऑर्डर नहीं दिया।
यह सही है या नहीं यह जांचने के लिए हम NOT IN ऑपरेटर का उपयोग कर सकते हैं।
उदाहरण
उन सभी ग्राहकों को वापस लौटाने के लिए जिन्होंने ऑर्डर तालिका में कोई ऑर्डर नहीं दिया है:
SELECT * FROM Customers
WHERE CustomerID NOT IN (SELECT CustomerID FROM Orders);
IN बनाम एकाधिक OR स्थितियाँ
आईएन ऑपरेटर
WHERE Country IN
('Germany', 'France', 'UK');
- संक्षिप्त और स्पष्ट
- कदम उठाना आसान
- बनाए रखना आसान है
- कम गलतियाँ
- मूल्य जितने ऊंचे होंगे, उतना अच्छा होगा
एकाधिक OR स्थितियाँ
WHERE Country = 'Germany'
OR Country = 'France'
OR Country = 'UK';
- लंबा और जटिल
- कदम रखना मुश्किल
- बनाए रखना मुश्किल है
- और भी गलतियाँ
- केवल जब मान कम हों
शैली के उदाहरण
कुछ कर्मचारी
विशिष्ट आईडी वाले कर्मचारी
SELECT * FROM Employees
WHERE EmployeeID IN (101, 105, 108, 112);
विशिष्ट उत्पाद
विशिष्ट श्रेणियों में आइटम
SELECT * FROM Products
WHERE CategoryID IN (1, 3, 5);
सक्रिय ग्राहक
कम से कम एक ऑर्डर वाले ग्राहक
SELECT * FROM Customers
WHERE CustomerID IN (
SELECT DISTINCT CustomerID
FROM Orders
);
उन्नत सामग्री
वे वस्तुएँ जो एक निश्चित मूल्य सीमा के अंतर्गत नहीं हैं
SELECT * FROM Products
WHERE Price NOT IN (10, 20, 30, 40);
उन्नत उदाहरण
एकाधिक टेबल
दो तालिकाओं से डेटा
SELECT * FROM Products
WHERE SupplierID IN (
SELECT SupplierID
FROM Suppliers
WHERE Country = 'USA'
);
तिथि सीमा
विशिष्ट महीनों में ऑर्डर
SELECT * FROM Orders
WHERE MONTH(OrderDate) IN (1, 2, 12);
तलुकदम माल
विशिष्ट छूट दरें
SELECT * FROM Products
WHERE Discount IN (10, 15, 20, 25);
मूल्यांकन सीमा
विशिष्ट रेटिंग वाले आइटम
SELECT * FROM Products
WHERE Rating IN (4, 5);
प्रदर्शन युक्तियाँ
प्रदर्शन में सुधार:
- कोड उपयोग:उन प्रोग्रामों में कोड बनाएं जो IN ऑपरेटर का उपयोग करते हैं
- मानों की संख्या:बहुत ऊंचे मूल्यों से बचें (100+)
- अनुपूरक प्रश्न:बड़ी उपश्रेणियों के लिए EXISTS का उपयोग करें
- डेटा के प्रकार:सुनिश्चित करें कि मान सही डेटा प्रकार में हैं
बचने योग्य बातें:
- बहुत लंबी मूल्य सूचियाँ
- धीमे सहायक प्रश्न
- सही डेटा प्रकार का अभाव
- कोड का अभाव