मुख्य सामग्री पर जाएँ

SQL NOT IN ऑपरेटर: शुरुआती लोगों के लिए एक व्यापक मार्गदर्शिका

इस शुरुआती मार्गदर्शिका के साथ SQL के NOT IN ऑपरेटर में महारत हासिल करें। डेटा को प्रभावी ढंग से फ़िल्टर करना सीखें, आम गलतियों से बचें, और दक्ष विकल्पों की जाँच करें
· 5 मि॰ पढ़ें

AI के साथ खोजें

डेटा विश्लेषण और प्रबंधन के क्षेत्र में, SQL (Structured Query Language) डेटाबेस सिस्टम तक पहुँचने और उन्हें संसाधित करने के लिए एक महत्वपूर्ण उपकरण है। इसकी कई क्षमताओं में, NOT IN ऑपरेटर डेटा सेट को फ़िल्टर करने का एक शक्तिशाली साधन है, जो उपयोगकर्ताओं को उन पंक्तियों को बाहर करने देता है जिनका मिलान निर्दिष्ट मानों की सूची से होता है। यह ट्यूटोरियल शुरुआती लोगों और डेटा प्रैक्टिशनरों के लिए NOT IN ऑपरेटर को सरल बनाने के उद्देश्य से बनाया गया है, ताकि इसके उपयोग में स्पष्टता बनी रहे और इसके संभावित जोखिमों को समझा जा सके।

क्यों NOT IN?

NOT IN ऑपरेटर पर ध्यान केंद्रित करने का कारण यह है कि यह डेटा बहिष्करण की स्थितियों में उपयोगी है। चाहे आप डेटा साफ़ कर रहे हों, रिपोर्ट तैयार कर रहे हों, या जटिल विश्लेषण कर रहे हों—विशिष्ट डेटा बिंदुओं को प्रभावी ढंग से बाहर करना समझना अमूल्य है। इस ऑपरेटर का सिंटैक्स सीधा है, लेकिन इसमें कुछ बारीकियाँ हैं जो प्रदर्शन और सटीकता को प्रभावित कर सकती हैं।

हमारा उद्देश्य NOT IN को गहराई से समझाना है ताकि आप इसे अपनी SQL क्वेरीज़ में प्रभावी ढंग से इस्तेमाल कर सकें।

SQL NOT IN को समझना

NOT IN की बुनियाद

NOT IN ऑपरेटर का उपयोग WHERE क्लॉज़ में उन पंक्तियों को बाहर करने के लिए किया जाता है जहाँ किसी निर्दिष्ट कॉलम का मान दी गई मानों की सूची में किसी से भी मेल खाता हो। इसका मूल सिंटैक्स इस प्रकार है:

SELECT column_names
FROM table_name
WHERE column_name NOT IN (value1, value2, ...);

यह सिंटैक्स ऑपरेटर की डेटा फ़िल्टरिंग में भूमिका को रेखांकित करता है—जो डेटा विश्लेषण और डेटाबेस प्रबंधन में एक अहम कदम है।

NOT IN के व्यावहारिक उपयोग

मान लें कि आपके पास ग्राहक जानकारी वाली एक तालिका है। यदि आप ऐसे ग्राहकों का चयन करना चाहते हैं जो कुछ विशिष्ट शहरों से नहीं हैं, तो NOT IN एक अमूल्य उपकरण बन जाता है, जो आपको परिणाम सेट से उन शहरों को आसानी से बाहर करने देता है।

कदम-दर-कदम NOT IN उदाहरण

उदाहरण 1: विशिष्ट मानों को बाहर करना

मान लें कि हमारे पास Customers नाम की तालिका है, जिसमें CustomerID, CustomerName, और City कॉलम हैं। ऐसे ग्राहकों को ढूँढने के लिए जो 'New York' या 'Los Angeles' में नहीं हैं, क्वेरी होगी:

CustomerlD

CustomerName

City

1

John Doe

New York

2

Jane Smith

Los Angeles

3

Emily Jones

Chicago

4

Chris Brown

Miami

5

Alex Johnson

San Francisco

6

Jessica White

New York

Customers तालिका

SELECT CustomerName, City
FROM Customers
WHERE City NOT IN ('New York', 'Los Angeles');

CustomerName

City

Emily Jones

Chicago

Chris Brown

Miami

Alex Johnson

San Francisco

उदाहरण 2: Subqueries के साथ NOT IN का उपयोग

NOT IN subqueries के साथ भी काम कर सकता है। उदाहरण के लिए, ऐसे उत्पाद ढूँढने के लिए जिनका कभी ऑर्डर नहीं हुआ:

ProductID

ProductName

1

Apple

2

Banana

3

Orange

4

Pear

5

Grape

Products तालिका

OrderID

ProductID

101

2

102

4

103

2

104

3

Orders तालिका

SELECT ProductName
FROM Products
WHERE ProductID NOT IN (
  SELECT ProductID
  FROM Orders
);

ProductName

Apple

Grape

सामान्य गलतियाँ और उनसे कैसे बचें

NULL मानों को संभालना

NOT IN के साथ एक आम समस्या तब आती है जब मानों की सूची में NULL हो। क्योंकि NULL एक अज्ञात मान का प्रतिनिधित्व करता है, NOT IN के साथ NULL की कोई भी तुलना कोई पंक्ति वापस नहीं करेगी, भले ही कुछ पंक्तियाँ तार्किक रूप से सूची से बाहर होनी चाहिए।

इसे टालने के लिए, सुनिश्चित करें कि मानों की सूची में NULL शामिल न हो, या NOT EXISTS जैसे वैकल्पिक तरीक़े अपनाएँ।

उदाहरण:

मान लें कि हमारे पास Orders तालिका है जिसमें CustomerID कॉलम है, जिनमें से कुछ NULL हैं जो अतिथि ऑर्डर दर्शाते हैं। यदि आप कुछ ग्राहकों द्वारा न किए गए ऑर्डर ढूँढने की क्वेरी चलाते हैं, और सूची में NULL शामिल करते हैं, तो कोई परिणाम नहीं मिलेगा।

OrderID

CustomerID

101

3

102

4

103

2

104

 

106

1

Orders तालिका

-- Assume we want to exclude CustomerID 1, 2, and unknown (NULL) customers
SELECT OrderID
FROM Orders
WHERE CustomerID NOT IN (1, 2, NULL);

यह क्वेरी कोई पंक्ति वापस नहीं करेगी, जो संभवतः इच्छित परिणाम नहीं है।

समाधान: सटीक परिणाम सुनिश्चित करने के लिए, NOT IN की सूची में NULL शामिल न करें। वैकल्पिक रूप से, ज्ञात मानों के लिए NOT IN और IS NOT NULL का संयोजन उपयोग करें ताकि NULL को प्रभावी ढंग से संभाला जा सके।

SELECT OrderID
FROM Orders
WHERE CustomerID NOT IN (1, 2) AND CustomerID IS NOT NULL;

OrderID

101

102

प्रदर्शन संबंधी विचार

बड़े डेटासेट या subqueries के लिए, NOT IN अक्सर NOT EXISTS या LEFT JOIN /IS NULL जैसे विकल्पों से कम कुशल हो सकता है। यह कमी इसलिए होती है क्योंकि NOT IN तालिका की हर पंक्ति की तुलना सूची के हर मान से करता है, जो बड़े डेटासेट पर धीमे प्रदर्शन का कारण बन सकता है।

SQL NOT IN के विकल्प

NOT EXISTS का उपयोग

जब ऐसे subqueries होते हैं जो NULL मान लौटा सकते हैं, तो NOT EXISTS को अक्सर NOT IN से बेहतर माना जाता है। यह सामान्यतः अधिक कुशल होता है क्योंकि मिलान मिलते ही यह रुक जाता है।

उदाहरण:

ऐसे उत्पाद ढूँढने के लिए जिनका कभी ऑर्डर नहीं हुआ, NOT EXISTS का उपयोग:

SELECT ProductName
FROM Products p
WHERE NOT EXISTS (
  SELECT 1
  FROM Orders o
  WHERE o.ProductID = p.ProductID
);

ProductName

Apple

Grape

यह क्वेरी orders तालिका में किसी उत्पाद के न होने की जाँच करती है, जो NOT IN के साथ संभावित रूप से बड़ी ID सूची से तुलना करने की तुलना में अधिक कुशल हो सकती है।

LEFT JOIN / IS NULL

पंक्तियों को बाहर करने का एक और कुशल तरीका LEFT JOIN के साथ WHERE ... IS NULL क्लॉज़ का उपयोग करना है। यह तरीका विशेष रूप से बड़े डेटासेट के लिए प्रभावी है।

उदाहरण:

उसी उद्देश्य—ऐसे उत्पाद ढूँढना जिनका कभी ऑर्डर नहीं हुआ—को पाने के लिए:

SELECT p.ProductName
FROM Products p
LEFT JOIN Orders o ON p.ProductID = o.ProductID
WHERE o.ProductID IS NULL;

ProductName

Apple

Grape

यह विधि LEFT JOIN का लाभ लेती है ताकि सभी उत्पाद और उनसे मिलते-जुलते ऑर्डर शामिल हों, फिर WHERE o.ProductID IS NULL का उपयोग करके उन उत्पादों को फ़िल्टर कर देती है जिनके ऑर्डर हैं, यानी उन्हें प्रभावी ढंग से बाहर करती है।

NOT IN का उपयोग करने के सर्वोत्तम अभ्यास

  • NULL मानों के लिए सूची की जाँच करें: अनपेक्षित परिणामों से बचने के लिए सुनिश्चित करें कि NOT IN में प्रयुक्त सूची में NULL मान न हों।
  • डेटासेट आकार पर विचार करें: बड़े डेटासेट या subqueries के लिए जाँचें कि क्या NOT EXISTS जैसे विकल्प बेहतर प्रदर्शन दे सकते हैं।
  • इंडेक्सिंग: जहाँ संभव हो, NOT IN क्लॉज़ में उपयोग किए गए कॉलम पर इंडेक्स सुनिश्चित करें ताकि क्वेरी प्रदर्शन सुधरे।

वास्तविक जीवन के डेटा प्रोजेक्ट में NOT IN का उपयोग

डेटा विश्लेषण में "Not IN" SQL कमांड का अक्सर उपयोग विशिष्ट डेटा प्राप्त करने के लिए किया जाता है। इस खंड में, हम एक बुकस्टोर डेटाबेस के साथ काम करेंगे जो अपने स्टॉक (स्टोर में उपलब्ध किताबें) और बिक्री (बेची गई किताबें) को ट्रैक करता है। हमारा लक्ष्य यह पहचानना है कि कौन-सी किताबें कभी बेची नहीं गईं।

हमारे पास दो तालिकाएँ हैं:

  • Inventory: बुकस्टोर में उपलब्ध किताबों की जानकारी रखने के लिए।
  • Sales: बेची गई किताबों के अभिलेख रखने के लिए।

image4.png

Inventory तालिका

image3.png

Sales तालिका

अब, हम यह पता लगाना चाहते हैं कि कौन-सी किताबें कभी नहीं बिकीं।

SELECT Title, Author 
FROM Inventory 
WHERE BookID NOT IN (
    SELECT BookID 
    FROM Sales
);

image1.png

अगले चरण में, हम अपनी इन्वेंट्री में ऐसी किताबों की पहचान करना चाहते हैं जो पिछले महीने में नहीं बिकीं, यह मानते हुए कि आज 7 फ़रवरी, 2024 है। इसमें Sales तालिका में SaleDate को वर्तमान तिथि से तुलना करना शामिल है।

SELECT Title, Author 
FROM Inventory 
WHERE BookID NOT IN (
    SELECT BookID 
    FROM Sales
    WHERE SaleDate >= date('now', '-1 month')
);

image2.png

निष्कर्ष

NOT IN ऑपरेटर SQL में आपकी क्वेरी के परिणामों से विशिष्ट मानों को बाहर करने का एक बहुमुखी उपकरण है। इसके सिंटैक्स, व्यावहारिक उपयोग, और संभावित जोखिमों को समझकर, आप इसे अपनी डेटा प्रोसेसिंग कार्यों में प्रभावी ढंग से इस्तेमाल कर सकते हैं।

प्रदर्शन और सटीकता को बेहतर बनाने के लिए NULL मानों और डेटासेट के आकार पर अवश्य विचार करें। जैसे-जैसे आप NOT IN से अधिक परिचित होते जाएँगे, यह आपके SQL टूलकिट में एक अमूल्य जोड़ साबित होगा, जो अधिक सटीक और कुशल डेटा विश्लेषण और प्रबंधन में मदद करेगा।

आप Improving Query Performance in SQL Server पाठ्यक्रम में NOT IN और NOT EXISTS के बारे में और जान सकते हैं, और हमारे SQL Basics Cheat Sheet और SQL Fundamentals स्किल ट्रैक में SQL ऑपरेटरों सहित बहुत कुछ खोज सकते हैं।

Abid Ali Awan

लेखक

Abid Ali Awan

एक प्रमाणित डेटा साइंटिस्ट के रूप में, मैं अत्याधुनिक तकनीक का उपयोग करके नवाचारी मशीन लर्निंग अनुप्रयोग बनाने के लिए उत्साहित रहता/रहती हूँ। स्पीच रिकॉग्निशन, डेटा विश्लेषण और रिपोर्टिंग, MLOps, संवादात्मक AI और NLP में मजबूत पृष्ठभूमि के साथ, मैंने ऐसे बुद्धिमान सिस्टम विकसित करने में अपनी विशेषज्ञता निखारी है जो वास्तविक प्रभाव डाल सकें। तकनीकी दक्षता के अलावा, मैं जटिल अवधारणाओं को स्पष्ट और संक्षिप्त भाषा में प्रस्तुत करने में भी निपुण हूँ। परिणामस्वरूप, मैं डेटा साइंस पर एक मांग में रहने वाला/वाली ब्लॉगर बन गया/गई हूँ, और डेटा प्रोफेशनलों के बढ़ते समुदाय के साथ अपने अनुभव और विचार साझा करता/करती हूँ। वर्तमान में, मैं कंटेंट निर्माण और संपादन पर केंद्रित हूँ, बड़े भाषा मॉडलों के साथ काम करते हुए ऐसा प्रभावशाली और आकर्षक कंटेंट विकसित कर रहा/रही हूँ जो व्यवसायों और व्यक्तियों दोनों को अपने डेटा का अधिकतम लाभ उठाने में मदद कर सके।

विषय