SQL Academy · पाठ

समुच्चयों के लिए IN और NOT IN

IN और NOT IN से value lists के आधार पर फ़िल्टर कीजिए, NOT IN में NULL की समस्या सीखिए और सुरक्षित semantics के लिए EXISTS में बदलिए।

पाठ 2, कुल 4 में से13 चरण

समुच्चयों के लिए IN और NOT IN, CoddyKit पर SQL Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

IN: सूची से मिलान करना

IN कई OR का संक्षिप्त रूप है:

SELECT * FROM users WHERE country IN ('US', 'CA', 'GB');

-- Equivalent to:
SELECT * FROM users
WHERE country = 'US' OR country = 'CA' OR country = 'GB';

सबक्वेरी के साथ IN

आप दाईं ओर सबक्वेरी का उपयोग कर सकते हैं:

SELECT * FROM orders
WHERE user_id IN (
  SELECT id FROM users WHERE country = 'US'
);

NOT IN: सूची को बाहर रखना

मिलान करने वाली पंक्तियों को फ़िल्टर से बाहर करें:

SELECT * FROM users WHERE status NOT IN ('banned', 'deleted');

NOT IN और NULL का जाल

यदि दाईं ओर NULL मौजूद है, तो NOT IN NULL लौटाता है — और जिन पंक्तियों की शर्त NULL होती है, वे हटा दी जाती हैं। परिणाम: शून्य पंक्तियाँ।

-- Suppose blocked_names contains NULL:
SELECT name FROM users
WHERE name NOT IN (SELECT excluded_name FROM blocked_names);
-- → 0 rows, silently

-- Safer: filter out NULLs explicitly, or use NOT EXISTS:
SELECT name FROM users u
WHERE NOT EXISTS (
  SELECT 1 FROM blocked_names b WHERE b.excluded_name = u.name
);

NOT EXISTS अधिक सुरक्षित क्यों है

NOT EXISTS मानक सहसंबद्ध सबक्वेरी के अर्थ का उपयोग करता है और NULL से सुरक्षित है। अधिकांश योजनाकार इसे सही रूप से लिखे गए NOT IN के समान ही अनुकूलित करते हैं।

IN बनाम OR — पठनीयता

स्पष्टता के लिए IN लंबी OR शृंखलाओं से बेहतर है और योजनाकार अक्सर इसे समान रूप से अनुकूलित करता है:

-- Hard to read:
WHERE country = 'US' OR country = 'CA' OR country = 'GB' OR ...

-- Clear:
WHERE country IN ('US', 'CA', 'GB', ...)

ट्यूपल के साथ IN (पंक्ति कंस्ट्रक्टर)

स्तंभों के युग्मों का मिलान करें:

SELECT * FROM order_items
WHERE (order_id, product_id) IN (
  (1, 42), (2, 99), (3, 17)
);

अनुक्रमणिका का उपयोग

अनुक्रमणिका वाले स्तंभ पर IN सूची को कई अनुक्रमणिका खोजों के रूप में चलाया जा सकता है (Bitmap Index Scan)। यह सामान्यतः तेज़ होता है।

-- Plan: Bitmap Index Scan + Bitmap Heap Scan
SELECT * FROM products WHERE id IN (1, 5, 99, 121, 4421);

बड़ी IN सूचियाँ

हज़ारों मानों वाली सूचियाँ धीमी हो सकती हैं। इसके बजाय:

  • किसी वास्तविक या अस्थायी तालिका के साथ JOIN करें
  • ऐरे पैरामीटर भेजने के लिए = ANY(array) का उपयोग करें
SELECT * FROM products WHERE id = ANY(ARRAY[1,2,3,...]);

खाली IN सूची

मानक SQL में खाली IN सूची अमान्य होती है। कुछ क्लाइंट एक स्थानापन्न मान भेजते हैं; SQL शर्त को परिस्थिति के अनुसार बनाना अधिक सुरक्षित है।

-- Use empty array trick in PostgreSQL:
SELECT * FROM products WHERE id = ANY($1::bigint[]);
-- Pass {} to get zero matches without rewriting the SQL.

IN बनाम JOIN

कभी-कभी सबक्वेरी IN की तुलना में JOIN अधिक स्पष्ट होता है:

-- With IN:
SELECT * FROM orders
WHERE user_id IN (SELECT id FROM users WHERE pro);

-- With JOIN:
SELECT o.*
FROM orders o
JOIN users  u ON u.id = o.user_id
WHERE u.pro;

पुनरावलोकन

समुच्चय में सदस्यता व्यक्त करने के लिए IN सरल रूप है।

  • पठनीयता के लिए OR के बजाय IN
  • NULL के साथ NOT IN जोखिमपूर्ण है — NOT EXISTS को प्राथमिकता दें
  • बड़े समुच्चयों के लिए JOIN करें या ऐरे भेजें

त्वरित जाँच

जब सबक्वेरी में NULL मान हो सकते हैं, तो NOT IN (subquery) का सबसे सुरक्षित विकल्प क्या है?

शुरुआत निःशुल्क

एआई शिक्षक के साथ SQL सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
46
पाठ
183

अक्सर पूछे जाने वाले प्रश्न

क्या “समुच्चयों के लिए IN और NOT IN” पाठ निःशुल्क है?

हाँ—“समुच्चयों के लिए IN और NOT IN” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“समुच्चयों के लिए IN और NOT IN” में मैं क्या सीखूँगा?

IN और NOT IN से value lists के आधार पर फ़िल्टर कीजिए, NOT IN में NULL की समस्या सीखिए और सुरक्षित semantics के लिए EXISTS में बदलिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या SQL Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“समुच्चयों के लिए IN और NOT IN” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस SQL Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर SQL Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. LIKE पैटर्न और वाइल्डकार्ड
  2. समुच्चयों के लिए IN और NOT IN
  3. Ranges के लिए BETWEEN
  4. IS NULL, IS NOT NULL और COALESCE
← SQL Academy पर वापस जाएँ