कोडिंग साक्षात्कार की तैयारी · पाठ

IN, ANY और ALL सबक्वेरी

समुच्चय-सदस्यता वाली सबक्वेरी और NULL के साथ प्रसिद्ध NOT IN समस्या सीखें

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

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

समुच्चय-सदस्यता वाली उप-क्वेरियाँ

जब कोई उप-क्वेरी मानों की सूची लौटाती है, तो आप IN, ANY या ALL के माध्यम से उसमें सदस्यता का परीक्षण करते हैं। इनके द्वारा एसक्यूएल पूछता है: क्या यह मान उस समुच्चय में है? या क्या यह उस समुच्चय के हर / किसी तत्व से बेहतर है?

  • IN — सूची में मौजूद किसी भी मान से मेल खाता है।
  • ANY/SOME — तुलना कम-से-कम एक तत्व के लिए सही हो तो सही।
  • ALL — केवल तभी सही जब तुलना हर तत्व के लिए सही हो।

उप-क्वेरी के साथ IN

दैनिक उपयोग का मामला: ऐसे कर्मचारियों को खोजिए जो 'NYC' में स्थित किसी भी विभाग में काम करते हों। उप-क्वेरी विभागों की पहचान-संख्याओं का एक समुच्चय लौटाती है, और IN उन पंक्तियों को रखता है जो उनमें से किसी से मेल खाती हैं।

यह स्वाभाविक ढंग से पढ़ा जाता है और साक्षात्कारकर्ता आम तौर पर सबसे पहले इसी रूप की अपेक्षा करते हैं।

SELECT name
FROM employees
WHERE dept_id IN (
  SELECT id FROM departments WHERE city = 'NYC'
);

= ANY का अर्थ IN के समान है

साक्षात्कारकर्ताओं को पसंद आने वाली एक उपयोगी समानता: = ANY (subquery) का अर्थ बिल्कुल वही है जो IN (subquery) का है। दोनों तब सही होते हैं जब मान समुच्चय के कम-से-कम एक तत्व के बराबर हो।

नीचे दी गई क्वेरी पिछली क्वेरी के समान ही परिणाम लौटाती है। ANY और इसका समानार्थी SOME, इसे > और < जैसे अन्य संचालकों तक विस्तारित करते हैं।

SELECT name
FROM employees
WHERE dept_id = ANY (
  SELECT id FROM departments WHERE city = 'NYC'
);

तुलना संचालक के साथ ANY

ANY, > या < के साथ शक्तिशाली हो जाता है। salary > ANY (set) तब सही होता है जब वेतन कम-से-कम सबसे छोटे तत्व से अधिक हो — अर्थात न्यूनतम से अधिक।

इससे ऐसे कर्मचारियों का पता चलता है जो विभाग 5 के कम-से-कम एक व्यक्ति से अधिक कमाते हैं।

SELECT name, salary
FROM employees
WHERE salary > ANY (
  SELECT salary FROM employees WHERE dept_id = 5
);

तुलना संचालक के साथ ALL

salary > ALL (set) तभी सही होता है जब वेतन हर तत्व से अधिक हो — अर्थात अधिकतम से अधिक। इससे ऐसे कर्मचारियों का पता चलता है जो विभाग 5 के सभी लोगों से अधिक कमाते हैं।

यह सूत्र याद रखिए: > ALL = MAX से अधिक, > ANY = MIN से अधिक। साक्षात्कारकर्ता लगातार इसकी जाँच करते हैं।

SELECT name, salary
FROM employees
WHERE salary > ALL (
  SELECT salary FROM employees WHERE dept_id = 5
);

NOT IN: प्रसिद्ध NULL जाल

यह उप-क्वेरी से जुड़ा साक्षात्कार में पूछा जाने वाला सबसे आम पेच है। यदि NOT IN में मौजूद उप-क्वेरी एक भी NULL लौटाती है, तो पूरा NOT IN एक भी पंक्ति नहीं लौटा सकता है — उन अनाथ रिकॉर्डों को नहीं जिनकी आप अपेक्षा कर रहे थे।

क्यों? x NOT IN (1, 2, NULL) का विस्तार x <> 1 AND x <> 2 AND x <> NULL के रूप में होता है। अंतिम तुलना UNKNOWN होती है, इसलिए AND कभी सही नहीं हो सकता।

SELECT name
FROM customers
WHERE id NOT IN (
  SELECT customer_id FROM orders
);

वह क्वेरी चुपचाप क्यों विफल हो जाती है

यदि orders.customer_id NULL स्वीकार कर सकता है और किसी पंक्ति में वहाँ NULL है, तो पिछली क्वेरी शून्य पंक्तियाँ लौटाती है, जबकि बिना आदेश वाले ग्राहक स्पष्ट रूप से मौजूद होते हैं।

  • NULL की मौजूदगी तर्क को UNKNOWN में बदल देती है।
  • इससे कोई त्रुटि नहीं आती — बस गलत, यानी खाली, परिणाम मिलते हैं।

साक्षात्कार के दौरान इस खतरे को स्पष्ट रूप से बताना एक मजबूत संकेत है।

NULL के साथ NOT IN को ठीक करना

साक्षात्कारकर्ता तीन सुरक्षित सुधार स्वीकार करते हैं:

  • उप-क्वेरी में NULL को बाहर कर दीजिए: WHERE customer_id IS NOT NULL जोड़िए।
  • NOT EXISTS का उपयोग करके इसे फिर लिखिए; यह NULL को सही ढंग से संभालता है।
  • LEFT JOIN ... IS NULL वाले प्रतिलोम-संयोजन का उपयोग कीजिए।

नीचे दिया गया सुरक्षित संस्करण बिना आदेश वाले ग्राहकों की वास्तविक सूची लौटाता है।

SELECT name
FROM customers
WHERE id NOT IN (
  SELECT customer_id FROM orders
  WHERE customer_id IS NOT NULL
);

NULL के साथ IN ठीक रहता है

एक आश्वस्त करने वाली बात: साधारण IN (निषेधित नहीं) सूची में मौजूद NULL से नहीं बिगड़ता। x IN (1, 2, NULL) तब सही होता है जब x, 1 या 2 के बराबर हो; NULL कभी मेल नहीं खाता।

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

बहु-स्तंभीय IN

कुछ एसक्यूएल बोलियाँ (पोस्टग्रेज़, MySQL) स्तंभों के समूह पर IN की अनुमति देती हैं, जिससे युग्मों का एक साथ मिलान किया जा सकता है। इससे उन आदेश-पंक्तियों का पता चलता है जिनका (उत्पाद, क्षेत्र) संयोजन किसी प्रचार तालिका में मौजूद है।

एसक्यूएल सर्वर में पंक्ति-मान वाला IN उपलब्ध नहीं है; वहाँ आपको इसे EXISTS के साथ फिर लिखना होगा। पोर्टेबिलिटी की इस कमी का उल्लेख करना साक्षात्कारकर्ताओं को प्रभावित करता है।

SELECT *
FROM order_lines
WHERE (product_id, region) IN (
  SELECT product_id, region FROM promotions
);

साक्षात्कार में कहने लायक संक्षिप्त उत्तर

यह कहिए: "IN समुच्चय-सदस्यता का परीक्षण करता है और = ANY के बराबर है। तुलना संचालकों के साथ, > ANY का अर्थ न्यूनतम से अधिक और > ALL का अर्थ अधिकतम से अधिक है। बड़ी अड़चन यह है कि किसी ऐसी उप-क्वेरी के साथ NOT IN, जो NULL लौटा सकती है, चुपचाप कोई पंक्ति नहीं लौटाता; इसलिए मैं IS NOT NULL से सुरक्षा करता हूँ या NOT EXISTS पर बदल देता हूँ।"

यह उत्तर सदस्यता, ANY/ALL के अर्थ और NULL वाले पेच को एक ही उत्तर में शामिल कर देता है।

त्वरित जाँच

साक्षात्कारकर्ता का पसंदीदा उप-क्वेरी वाला पेच।

पुनरावलोकन

समुच्चय-सदस्यता वाली उप-क्वेरियाँ, अब पूरी तरह स्पष्ट:

  • IN = = ANY: समुच्चय के किसी भी तत्व से मेल खाता है।
  • > ANY का अर्थ न्यूनतम से अधिक; > ALL का अर्थ अधिकतम से अधिक।
  • उप-क्वेरी में NULL होने पर NOT IN चुपचाप कोई पंक्ति नहीं लौटाता — IS NOT NULL से सुरक्षा कीजिए या NOT EXISTS का उपयोग कीजिए।
  • सादा IN NULL को स्वीकार करता है; कुछ बोलियों में बहु-स्तंभीय IN काम करता है।

अगला विषय: EXISTS बनाम IN और प्रदर्शन का वह सवाल जिसे वरिष्ठ-स्तर के साक्षात्कारों में बहुत पसंद किया जाता है।

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

एआई शिक्षक के साथ कोडिंग साक्षात्कार की तैयारी सीखें — निःशुल्क

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

पाठ्यक्रम
90
पाठ
360

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

क्या “IN, ANY और ALL सबक्वेरी” पाठ निःशुल्क है?

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

“IN, ANY और ALL सबक्वेरी” में मैं क्या सीखूँगा?

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

क्या कोडिंग साक्षात्कार की तैयारी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

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

“IN, ANY और ALL सबक्वेरी” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. SELECT और WHERE में स्केलर सबक्वेरी
  2. FROM खंड में सबक्वेरी (व्युत्पन्न तालिकाएँ)
  3. IN, ANY और ALL सबक्वेरी
  4. EXISTS बनाम IN का प्रदर्शन
← कोडिंग साक्षात्कार की तैयारी पर वापस जाएँ