JOIN से समुच्चय संचालन का अनुकरण
जिन बोली में वे उपलब्ध नहीं हैं, वहाँ EXCEPT और INTERSECT को फिर से लिखें
JOIN से समुच्चय संचालन का अनुकरण, CoddyKit पर SQL साक्षात्कार की तैयारी का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL साक्षात्कार की तैयारी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
समुच्चय संचालनों का अनुकरण क्यों करें
हर आँकड़ा-भंडार INTERSECT और EXCEPT का समर्थन नहीं करता। उदाहरण के लिए, पुराने MySQL संस्करणों में इनका पूरी तरह अभाव था। साक्षात्कारकर्ता यह जाँचते हैं कि संचालक उपलब्ध न होने पर आप JOIN और उपक्वेरियों से समुच्चय-तर्क दोबारा बना सकते हैं या नहीं।
समुच्चय संचालक और उसके JOIN समकक्ष—दोनों को जानने से सिद्ध होता है कि आप समझते हैं कि संचालक वास्तव में क्या गणना करता है।
INNER JOIN के रूप में INTERSECT
INTERSECT दोनों समुच्चयों में सामान्य पंक्तियाँ ढूँढता है। इसका JOIN समकक्ष सभी तुलना किए गए कॉलमों पर किया गया INNER JOIN है, जिसमें दोहराव हटाने के समान व्यवहार के लिए DISTINCT भी जोड़ा जाता है।
तुलना किया गया हर कॉलम JOIN की मिलान-शर्त का हिस्सा बन जाता है।
-- A INTERSECT B emulated:
SELECT DISTINCT a.customer_id
FROM orders_2023 a
JOIN orders_2024 b
ON a.customer_id = b.customer_id;INTERSECT के लिए DISTINCT क्यों आवश्यक है
साधारण INNER JOIN पंक्तियों की संख्या बढ़ा सकता है: यदि किसी मान की किसी भी पक्ष में कई बार उपस्थिति हो, तो JOIN पंक्तियों को गुणा कर देता है। मानक INTERSECT हर सामान्य पंक्ति को केवल एक बार लौटाता है, इसलिए JOIN द्वारा जोड़ी गई दोहराई गई पंक्तियों को समेटने के लिए DISTINCT जोड़ना आवश्यक है।
यहाँ DISTINCT भूल जाना साक्षात्कार में होने वाली आम गलती है।
-- without DISTINCT, a customer with 3 orders in each year
-- would appear 9 times from the joinLEFT JOIN / IS NULL के रूप में EXCEPT
EXCEPT (A में मौजूद, लेकिन B में नहीं) एंटी-जॉइन है। विभिन्न डेटाबेस में चलने योग्य रूप में A से B पर सभी कॉलमों के आधार पर LEFT JOIN करें, केवल वे पंक्तियाँ रखें जिनमें B वाला भाग NULL (कोई मिलान नहीं) हो, और फिर DISTINCT लगाएँ।
यह LEFT JOIN / IS NULL पैटर्न एसक्यूएल साक्षात्कारों में सबसे अधिक दोहराई जाने वाली युक्तियों में से एक है।
SELECT DISTINCT a.customer_id
FROM orders_2023 a
LEFT JOIN orders_2024 b
ON a.customer_id = b.customer_id
WHERE b.customer_id IS NULL;NOT EXISTS के साथ EXCEPT
इसी तरह विभिन्न डेटाबेस में चलने योग्य EXCEPT के लिए NOT EXISTS का उपयोग किया जा सकता है। इसका अर्थ है, "A की हर ऐसी पंक्ति रखें जिसके लिए B की कोई मिलान वाली पंक्ति मौजूद न हो" और यह NULL मानों को विश्वसनीय ढंग से संभालता है।
कई इंजीनियर NOT EXISTS को प्राथमिकता देते हैं, क्योंकि इसका आशय स्पष्ट होता है और यह NOT IN + NULL वाली समस्या से बचाता है।
SELECT DISTINCT a.customer_id
FROM orders_2023 a
WHERE NOT EXISTS (
SELECT 1 FROM orders_2024 b
WHERE b.customer_id = a.customer_id
);EXISTS के साथ INTERSECT
इसी तरह, INTERSECT को EXISTS के साथ लिखा जा सकता है: A की हर DISTINCT पंक्ति रखें जिसके लिए B की कोई मिलान वाली पंक्ति मौजूद हो।
EXISTS पहले मिलान पर तुरंत रुक जाता है, इसलिए यह कुशल हो सकता है और जोड़ के अनावश्यक फैलाव से बचाता है; कई बार जोड़ वाले हिस्से पर DISTINCT लगाने की आवश्यकता भी नहीं रहती।
SELECT DISTINCT a.customer_id
FROM orders_2023 a
WHERE EXISTS (
SELECT 1 FROM orders_2024 b
WHERE b.customer_id = a.customer_id
);NOT IN NULL की उलझन
EXCEPT का अनुकरण करने के लिए NOT IN आकर्षक लग सकता है, लेकिन यह खतरनाक है: यदि सबक्वेरी से कोई भी NULL मान लौटे, तो तुलना UNKNOWN बन जाने के कारण NOT IN एक भी पंक्ति नहीं लौटाता।
यह परीक्षाओं में बार-बार पूछी जाने वाली पेचीदगी है। NULL मानों के लिए सुरक्षित LEFT JOIN / IS NULL या NOT EXISTS को प्राथमिकता दें।
-- RISKY if orders_2024.customer_id can be NULL:
SELECT DISTINCT customer_id FROM orders_2023
WHERE customer_id NOT IN (
SELECT customer_id FROM orders_2024
);कई कॉलमों पर मिलान
जब समुच्चय-तुलना कई कॉलमों तक फैली हो, तो हर कॉलम शर्त में शामिल होता है। एंटी-जॉइन के लिए आपको उन कॉलमों में NULL मान होने की संभावना को भी संभालना होगा; यहीं NOT EXISTS विशेष रूप से उपयोगी है।
ON खंड में हर कॉलम को स्पष्ट रूप से लिखें; किसी एक को छोड़ देने पर "समान पंक्ति" का अर्थ चुपचाप बदल जाता है।
SELECT DISTINCT a.id, a.city
FROM a
LEFT JOIN b
ON a.id = b.id AND a.city = b.city
WHERE b.id IS NULL;ऑपरेटर के बिना UNION का अनुकरण
UNION ALL केवल संयोजन है, जिसे हर डेटाबेस बोली सीधे समर्थित करती है। जहाँ अलग-अलग पंक्तियों वाला UNION चाहिए, वहाँ सबक्वेरी के भीतर UNION ALL से पंक्तियाँ जोड़ें और उसे सभी कॉलमों पर SELECT DISTINCT या GROUP BY से समेटें।
इससे स्पष्ट होता है कि UNION वास्तव में UNION ALL और डुप्लिकेट हटाने के एक चरण का संयोजन है।
SELECT DISTINCT * FROM (
SELECT city FROM a
UNION ALL
SELECT city FROM b
) combined;सही अनुकरण चुनना
निर्णय मार्गदर्शिका:
- INTERSECT →
EXISTSया INNER JOIN + DISTINCT। - EXCEPT →
NOT EXISTSया LEFT JOIN / IS NULL। - जहाँ NULL मान संभव हों, वहाँ
NOT INसे बचें। - UNION → DISTINCT में समेटा हुआ UNION ALL।
EXISTS / NOT EXISTS सबसे अधिक पोर्टेबल और NULL-सुरक्षित हैं, इसलिए साक्षात्कार में ये सबसे सुरक्षित उत्तर होते हैं।
इसे एक साथ समझना
समुच्चय ऑपरेटरों को जोड़ के रूप में लिख पाना दिखाता है कि आप उन्हें केवल वाक्य-विन्यास के रूप में नहीं, बल्कि समुच्चय-तर्क के रूप में समझते हैं। एंटी-जॉइन (LEFT JOIN / IS NULL या NOT EXISTS) सबसे उपयोगी पैटर्न है: यह EXCEPT के अनुकरण, बिना संबंधित पंक्तियाँ ढूँढने और अनुपस्थित रिकॉर्ड वाले प्रश्नों में समान रूप से दिखाई देता है।
सही परिणामों के लिए पहले NOT EXISTS प्रस्तुत करें, फिर प्रदर्शन पर चर्चा के लिए जोड़ वाला रूप बताएँ।
त्वरित जाँच
आपके डेटाबेस में EXCEPT समर्थित नहीं है। आपको orders_2023 में मौजूद वे customer_ids चाहिए जो orders_2024 में नहीं हैं, और इस कॉलम में NULL मान हो सकते हैं।
पुनरावृत्ति
मुख्य बातें:
INTERSECT→ INNER JOIN + DISTINCT, याEXISTS।EXCEPT→ LEFT JOIN / IS NULL, याNOT EXISTS(एंटी-जॉइन)।- समुच्चय ऑपरेटरों के डुप्लिकेट हटाने वाले व्यवहार से मेल खाने और जोड़ के फैलाव को नियंत्रित करने के लिए
DISTINCTलगाएँ। - संभावित NULL मानों के साथ
NOT INसे बचें; NOT EXISTS को प्राथमिकता दें। UNION= DISTINCT में समेटा हुआ UNION ALL।
एआई शिक्षक के साथ SQL सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “JOIN से समुच्चय संचालन का अनुकरण” पाठ निःशुल्क है?
हाँ—“JOIN से समुच्चय संचालन का अनुकरण” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL साक्षात्कार की तैयारी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“JOIN से समुच्चय संचालन का अनुकरण” में मैं क्या सीखूँगा?
जिन बोली में वे उपलब्ध नहीं हैं, वहाँ EXCEPT और INTERSECT को फिर से लिखें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL साक्षात्कार की तैयारी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या SQL साक्षात्कार की तैयारी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL साक्षात्कार की तैयारी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“JOIN से समुच्चय संचालन का अनुकरण” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस SQL साक्षात्कार की तैयारी पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर SQL साक्षात्कार की तैयारी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- UNION बनाम UNION ALL
- COLUMN की संख्या और प्रकार की संगतता
- तुलना के लिए INTERSECT और EXCEPT
- JOIN से समुच्चय संचालन का अनुकरण