SQL जगत में, कई क्वेरियों से डेटा को मिलाकर देखना एक बुनियादी आवश्यकता है, और इसे पूरा करने के लिए SQL में UNION और UNION ALL जैसे शक्तिशाली फंक्शन उपलब्ध हैं।
जैसा कि आप देखेंगे, SQL में UNION और UNION ALL फंक्शनों के सूक्ष्म अंतर को समझना कुशल क्वेरींग और डेटा प्रबंधन के लिए अनिवार्य है। यह ट्यूटोरियल सहायक डेटासेट्स का उपयोग करके इनके प्रमुख समानताएँ, अंतर, और उपयोग परिदृश्यों को समझाता है ताकि आप अपनी SQL क्वेरियों को अनुकूलित कर सकें।
संक्षिप्त उत्तर: SQL UNION बनाम UNION ALL
मुख्य अंतर यह है कि UNION डुप्लिकेट रिकॉर्ड हटाता है, जबकि UNION ALL सभी डुप्लिकेट सहित सभी रिकॉर्ड रखता है। यह भेद न केवल परिणाम में पंक्तियों की संख्या बदलता है, बल्कि प्रदर्शन पर भी असर डालता है।
Feature
UNION
UNION ALL
Duplicates
डुप्लिकेट रिकॉर्ड हटाता है
सभी रिकॉर्ड रखता है (डुप्लिकेट सहित)
Performance
धीमा (डुप्लिकेट ढूँढने के लिए डेटा को sort/hash करना पड़ता है)
तेज़ (डेटा को सीधे परिणाम में जोड़ता है)
Operation
सेट थ्योरी (Mathematical Union)
एपेंडिंग / स्टैकिंग परिणाम
आइए दो नमूना टेबल्स employees_2023 और employees_2024 पर विचार करें, जो दो अलग-अलग वर्षों के कर्मचारी रिकॉर्ड दर्शाती हैं।
अब, UNION फंक्शन का उपयोग करके अपनी दोनों टेबल्स को जोड़ते हैं।
SELECT employee_id, name, department FROM employees_2023
UNIONSELECT employee_id, name, department FROM employees_2024;संचालित द्वारा
employee_id
name
department
1
Alice
HR
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
इस परिणाम में, डुप्लिकेट रिकॉर्ड हटा दिए गए हैं। अब, इसे UNION ALL उपयोग करने के बाद प्राप्त परिणाम से तुलना करते हैं।
SELECT employee_id, name, department FROM employees_2023
UNIONALLSELECT employee_id, name, department FROM employees_2024;संचालित द्वारा
employee_id
name
department
1
Alive
HR
2
Bob
IT
3
Charlie
Finance
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
इस परिणाम में, सभी रिकॉर्ड शामिल हैं, और डुप्लिकेट नहीं हटाए गए हैं।
SQL में UNION क्या है?
UNION फंक्शन दो या अधिक SELECT क्वेरियों के परिणामों को एकल परिणाम सेट में जोड़ता है और डुप्लिकेट पंक्तियाँ हटा देता है। UNION के भीतर प्रत्येक SELECT स्टेटमेंट में कॉलमों की संख्या समान होनी चाहिए। साथ ही, उनके डेटा प्रकार समान होने चाहिए और कॉलमों का क्रम भी समान होना चाहिए। फंक्शन को समझने के लिए, नीचे दो नमूना टेबल बनाते हैं।
ये छोटी टेबल्स हैं जिनमें तीन-तीन रिकॉर्ड हैं, और कॉलम नाम स्वयं स्पष्ट हैं। अब जब हमारी दोनों टेबल्स बन गई हैं, तो UNION फंक्शन लागू करते हैं।
SELECT employee_id, employee_name
FROM sales_team
UNIONSELECT employee_id, employee_name
FROM support_team;संचालित द्वारा
UNION फंक्शन का आउटपुट। चित्र: लेखक
आप देख सकते हैं कि employee_id का डुप्लिकेट प्रविष्टि, जिसका मान 3 है, हटा दी गई है।
SQL में UNION के उपयोग के मामले क्या हैं?
यहाँ UNION फंक्शन के कुछ सामान्य उपयोग के मामले दिए गए हैं।
अलग-अलग टेबल्स के परिणामों को मिलाना: जब आप कई टेबल्स से डेटा मिलाना चाहते हैं और डुप्लिकेट रिकॉर्ड नहीं चाहते, तो UNION उपयुक्त है।
विभिन्न डेटा स्रोतों का प्रबंधन: अलग-अलग डेटा स्रोतों की टेबल्स को मिलाते समय UNION उपयोगी है।
क्वेरियों के बीच डुप्लिकेट हटाना: जब आप संयुक्त परिणाम सेट की अद्वितीयता सुनिश्चित करना चाहते हैं, तो UNION का उपयोग करें।
SQL में UNION ALL क्या है?
UNION ALL फंक्शन दो या अधिक SELECT क्वेरियों के परिणामों को जोड़ता है और सभी डुप्लिकेट पंक्तियाँ शामिल करता है। यह फंक्शन UNION से तेज़ है क्योंकि यह डुप्लिकेट हटाने में समय नहीं लगाता।
SELECT employee_id, employee_name
FROM sales_team
UNIONALLSELECT employee_id, employee_name
FROM support_team;संचालित द्वारा
UNION ALL फंक्शन का आउटपुट। चित्र: लेखक
आप देख सकते हैं कि इस मामले में डुप्लिकेट प्रविष्टियाँ दोहराई गई हैं और हटाई नहीं गई हैं।
SQL में UNION ALL के उपयोग के मामले क्या हैं?
यहाँ UNION ALL फंक्शन के कुछ सामान्य उपयोग के मामले दिए गए हैं।
डुप्लिकेट सहित परिणामों को मिलाना: जब आपको कई क्वेरियों के परिणामों को मिलाकर सभी डुप्लिकेट सहित रखना हो, तब UNION ALL का उपयोग करें।
प्रदर्शन संबंधी विचार:UNION ALLUNION की तुलना में समय-कुशल है, क्योंकि इसे डुप्लिकेट हटाने का अतिरिक्त चरण नहीं करना पड़ता।
विभिन्न अवधियों से डेटा एकत्र करना: अलग-अलग अवधियों या स्रोतों से डेटा एकत्र करते समय, और डुप्लिकेट प्रविष्टियों को बनाए रखना आवश्यक हो, तो UNION ALL वरीय है।
रिपोर्टिंग और विश्लेषण: ऐसी रिपोर्टिंग जहाँ हर रिकॉर्ड, डुप्लिकेट सहित, आवश्यक हो, वहाँ UNION ALL उपयुक्त है।
UNION और UNION ALL: समानताएँ और अंतर
आइए समानताओं और अंतरों की एक सारणी बनाते हैं।
Feature
UNION
UNION ALL
Duplicate rows
Removed
Included
Performance
Slower
Faster
Use Case
When you need unique records
When you need all records
Result Size
Smaller
Larger
विभिन्न SQL डायलैक्ट्स में UNION और UNION ALL की सिंटैक्स भिन्नताएँ
हालाँकि बुनियादी सिंटैक्स अलग-अलग SQL डायलैक्ट्स में समान रहती है, प्लेटफ़ॉर्म के अनुसार हल्के फर्क हो सकते हैं। अधिकांश प्लेटफ़ॉर्म, जैसे SQL Server, Oracle, MySQL, PostgreSQL, या BigQuery में कोड कुछ इस प्रकार दिखाई देगा जैसा नीचे दिखाया गया है।
SELECT employee_id, employee_name
FROM sales_team
UNIONALLSELECT employee_id, employee_name
FROM support_team;संचालित द्वारा
इन SQL डायलैक्ट्स में बुनियादी कमांड समान रहते हैं, कुछ सूक्ष्मताओं और अंतरों के साथ:
NULLs और Collations का प्रबंधन: अलग-अलग SQL डायलैक्ट्स में NULL मानों और स्ट्रिंग कोलेशन को संभालने के नियम भिन्न हो सकते हैं।
प्रदर्शन अनुकूलन: प्रदर्शन अनुकूलन और निष्पादन दक्षता बदल सकती है।
त्रुटि प्रबंधन और चेतावनियाँ: इन फंक्शनों का उपयोग करते समय अलग-अलग डायलैक्ट्स त्रुटियों और चेतावनियों को भिन्न तरीके से संभाल सकते हैं।
प्लेटफ़ॉर्म-विशिष्ट फंक्शन और फ़ीचर: कुछ SQL डायलैक्ट्स अतिरिक्त फंक्शन या फ़ीचर प्रदान कर सकते हैं जिन्हें अधिक जटिल परिदृश्यों में UNION और UNION ALL के साथ इस्तेमाल किया जा सकता है।
PySpark के मामले में कमांड काफी भिन्न है, क्योंकि यह एक वितरित परिवेश में काम करता है। नीचे दिया गया कोड मानता है कि df1 और df2 उन दो डेटा फ्रेम्स के नाम हैं जिनमें हमने ऊपर बनाई दो टेबल्स हैं। :
SQL UNION का उपयोग करते समय 3 नियम और सामान्य त्रुटियाँ
यद्यपि UNION और UNION ALL शक्तिशाली हैं, वे सिंटैक्स के प्रति सख्त हैं। यदि आपकी क्वेरी त्रुटि दे रही है, तो संभव है कि वह इन तीन स्वर्ण नियमों में से किसी का उल्लंघन कर रही हो।
1. कॉलम काउंट में असंगति
उपयोगकर्ताओं द्वारा मिलने वाली सबसे आम त्रुटि कॉलमों की संख्या में असंगति है। दो डेटासेट्स को मिलाने के लिए टेबल्स का "आकार" समान होना चाहिए। आप 3 कॉलम वाली टेबल को 2 कॉलम वाली टेबल के ऊपर स्टैक नहीं कर सकते।
त्रुटि:
-- This will fail because the column counts do not matchSELECT employee_id, name, department
FROM employees_2023
UNIONSELECT employee_id, name
FROM employees_2024;संचालित द्वारा
समाधान: सुनिश्चित करें कि दोनों SELECT स्टेटमेंट्स बिल्कुल समान संख्या में कॉलम मांगते हैं। यदि दूसरी टेबल में (जैसे department) डेटा नहीं है, तो काउंट मिलाने के लिए आप प्लेसहोल्डर के रूप में NULL सेलेक्ट कर सकते हैं:
SELECT employee_id, name, department FROM employees_2023
UNIONSELECT employee_id, name,NULLas department FROM employees_2024;संचालित द्वारा
2. डेटा टाइप संगतता
SQL परिणामों को स्थिति के आधार पर मिलाता है, न कि कॉलम नाम के आधार पर। आपकी पहली क्वेरी के पहले कॉलम का डेटा प्रकार दूसरी क्वेरी के पहले कॉलम के डेटा प्रकार से मेल खाना चाहिए (या संगत होना चाहिए)।
त्रुटि: यदि आप गलती से कॉलमों का क्रम बदल देते हैं, तो SQL एक संख्या (ID) को स्ट्रिंग (Name) के ऊपर स्टैक करने की कोशिश करता है, जिससे डेटा टाइप रूपांतरण त्रुटि होती है।
-- This fails because Column 1 (ID - INT) cannot combine with Column 1 (Name - VARCHAR)SELECT employee_id, name FROM employees_2023
UNIONSELECT name, employee_id FROM employees_2024;संचालित द्वारा
समाधान: हर SELECT स्टेटमेंट में कॉलमों का क्रम बिल्कुल समान है, यह हमेशा जाँच लें, जो कि UNION के भीतर आता है।
3. ORDER BY की सीमाएँ
ORDER BY क्लॉज़ कहाँ रखें, यह एक आम उलझन है। आप UNION ऑपरेशन के भीतर व्यक्तिगत सब-क्वेरियों को sort नहीं कर सकते; आप केवल अंतिम संयुक्त परिणाम को sort कर सकते हैं।
त्रुटि: अंतिम क्वेरी से पहले ORDER BY का प्रयोग करने पर सिंटैक्स त्रुटि आएगी।
-- INCORRECT SYNTAXSELECT employee_id, name FROM employees_2023
ORDERBY employee_id -- You cannot sort here!UNIONSELECT employee_id, name FROM employees_2024;संचालित द्वारा
समाधान: अपने क्वेरी के बिलकुल अंत में ORDER BY क्लॉज़ रखें। यह पूरे संयुक्त परिणाम सेट पर सॉर्ट लागू करता है।
-- CORRECT SYNTAXSELECT employee_id, name FROM employees_2023
UNIONSELECT employee_id, name FROM employees_2024
ORDERBY employee_id;-- Sorts the final resultसंचालित द्वारा
अंतिम विचार
SQL का उपयोग करके डेटा का कुशल प्रबंधन करने में UNION और UNION ALL के अनुप्रयोग को समझना आवश्यक है। जहाँ UNION केवल विशिष्ट रिकॉर्ड चुनता है, वहीं UNION ALL सभी रिकॉर्ड चुनता है, जिससे प्रदर्शन और परिणाम सेट के आकार पर असर पड़ता है। अपनी विशिष्ट आवश्यकताओं के अनुसार उपयुक्त फंक्शन चुनने के लिए इस ज्ञान का उपयोग करें।
अधिक सीखने के लिए, निम्नलिखित स्रोतों को देखें:
Introduction to SQL: SQL का उपयोग करके रिलेशनल डेटाबेस बनाना और क्वेरी करना सीखें।
SQL Fundamentals: अपने डेटा के साथ इंटरैक्ट करने और उसे क्वेरी करने के लिए आवश्यक बुनियादी SQL कौशल हासिल करें।
SQL Associate Certification: डेटाबेस से उपयुक्त डेटा निकालकर और सामान्य डेटा प्रश्नों के उत्तर देकर अपनी SQL क्षमता प्रदर्शित करें।
Intermediate SQL: इस हैंड्स-ऑन कोर्स के साथ, आप वह सब सीखेंगे जो आपको आज अपने स्वयं के SQL कोड से डेटा का विश्लेषण करने के लिए जानना चाहिए।
SQL जगत में, कई क्वेरियों से डेटा को मिलाकर देखना एक बुनियादी आवश्यकता है, और इसे पूरा करने के लिए SQL में
UNIONऔरUNION ALLजैसे शक्तिशाली फंक्शन उपलब्ध हैं।जैसा कि आप देखेंगे, SQL में
UNIONऔरUNION ALLफंक्शनों के सूक्ष्म अंतर को समझना कुशल क्वेरींग और डेटा प्रबंधन के लिए अनिवार्य है। यह ट्यूटोरियल सहायक डेटासेट्स का उपयोग करके इनके प्रमुख समानताएँ, अंतर, और उपयोग परिदृश्यों को समझाता है ताकि आप अपनी SQL क्वेरियों को अनुकूलित कर सकें।संक्षिप्त उत्तर: SQL UNION बनाम UNION ALL
मुख्य अंतर यह है कि
UNIONडुप्लिकेट रिकॉर्ड हटाता है, जबकिUNION ALLसभी डुप्लिकेट सहित सभी रिकॉर्ड रखता है। यह भेद न केवल परिणाम में पंक्तियों की संख्या बदलता है, बल्कि प्रदर्शन पर भी असर डालता है।आइए दो नमूना टेबल्स
employees_2023औरemployees_2024पर विचार करें, जो दो अलग-अलग वर्षों के कर्मचारी रिकॉर्ड दर्शाती हैं।employee_id
name
department
1
Alice
HR
2
Bob
IT
3
Charlie
Finance
employee_id
name
department
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
अब,
UNIONफंक्शन का उपयोग करके अपनी दोनों टेबल्स को जोड़ते हैं।employee_id
name
department
1
Alice
HR
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
इस परिणाम में, डुप्लिकेट रिकॉर्ड हटा दिए गए हैं। अब, इसे
UNION ALLउपयोग करने के बाद प्राप्त परिणाम से तुलना करते हैं।employee_id
name
department
1
Alive
HR
2
Bob
IT
3
Charlie
Finance
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
इस परिणाम में, सभी रिकॉर्ड शामिल हैं, और डुप्लिकेट नहीं हटाए गए हैं।
SQL में UNION क्या है?
UNIONफंक्शन दो या अधिकSELECTक्वेरियों के परिणामों को एकल परिणाम सेट में जोड़ता है और डुप्लिकेट पंक्तियाँ हटा देता है।UNIONके भीतर प्रत्येकSELECTस्टेटमेंट में कॉलमों की संख्या समान होनी चाहिए। साथ ही, उनके डेटा प्रकार समान होने चाहिए और कॉलमों का क्रम भी समान होना चाहिए। फंक्शन को समझने के लिए, नीचे दो नमूना टेबल बनाते हैं।उपरोक्त कोड इस ट्यूटोरियल में उपयोग होने वाली दोनों टेबल्स, क्रमशः
sales_teamऔरsupport_team, बना देगा। आप नीचे दिए गए कोड से टेबल्स देख सकते हैं।sales_team टेबल में रिकॉर्ड। चित्र: लेखक
support_team टेबल में रिकॉर्ड। चित्र: लेखक
ये छोटी टेबल्स हैं जिनमें तीन-तीन रिकॉर्ड हैं, और कॉलम नाम स्वयं स्पष्ट हैं। अब जब हमारी दोनों टेबल्स बन गई हैं, तो
UNIONफंक्शन लागू करते हैं।UNION फंक्शन का आउटपुट। चित्र: लेखक
आप देख सकते हैं कि
employee_idका डुप्लिकेट प्रविष्टि, जिसका मान3है, हटा दी गई है।SQL में UNION के उपयोग के मामले क्या हैं?
यहाँ
UNIONफंक्शन के कुछ सामान्य उपयोग के मामले दिए गए हैं।अलग-अलग टेबल्स के परिणामों को मिलाना: जब आप कई टेबल्स से डेटा मिलाना चाहते हैं और डुप्लिकेट रिकॉर्ड नहीं चाहते, तो
UNIONउपयुक्त है।विभिन्न डेटा स्रोतों का प्रबंधन: अलग-अलग डेटा स्रोतों की टेबल्स को मिलाते समय
UNIONउपयोगी है।क्वेरियों के बीच डुप्लिकेट हटाना: जब आप संयुक्त परिणाम सेट की अद्वितीयता सुनिश्चित करना चाहते हैं, तो
UNIONका उपयोग करें।SQL में UNION ALL क्या है?
UNION ALLफंक्शन दो या अधिकSELECTक्वेरियों के परिणामों को जोड़ता है और सभी डुप्लिकेट पंक्तियाँ शामिल करता है। यह फंक्शनUNIONसे तेज़ है क्योंकि यह डुप्लिकेट हटाने में समय नहीं लगाता।UNION ALL फंक्शन का आउटपुट। चित्र: लेखक
आप देख सकते हैं कि इस मामले में डुप्लिकेट प्रविष्टियाँ दोहराई गई हैं और हटाई नहीं गई हैं।
SQL में UNION ALL के उपयोग के मामले क्या हैं?
यहाँ
UNION ALLफंक्शन के कुछ सामान्य उपयोग के मामले दिए गए हैं।UNION ALLका उपयोग करें।UNION ALLUNIONकी तुलना में समय-कुशल है, क्योंकि इसे डुप्लिकेट हटाने का अतिरिक्त चरण नहीं करना पड़ता।UNION ALLवरीय है।UNION ALLउपयुक्त है।UNION और UNION ALL: समानताएँ और अंतर
आइए समानताओं और अंतरों की एक सारणी बनाते हैं।
Feature
UNION
UNION ALL
Duplicate rows
Removed
Included
Performance
Slower
Faster
Use Case
When you need unique records
When you need all records
Result Size
Smaller
Larger
विभिन्न SQL डायलैक्ट्स में UNION और UNION ALL की सिंटैक्स भिन्नताएँ
हालाँकि बुनियादी सिंटैक्स अलग-अलग SQL डायलैक्ट्स में समान रहती है, प्लेटफ़ॉर्म के अनुसार हल्के फर्क हो सकते हैं। अधिकांश प्लेटफ़ॉर्म, जैसे SQL Server, Oracle, MySQL, PostgreSQL, या BigQuery में कोड कुछ इस प्रकार दिखाई देगा जैसा नीचे दिखाया गया है।
इन SQL डायलैक्ट्स में बुनियादी कमांड समान रहते हैं, कुछ सूक्ष्मताओं और अंतरों के साथ:
NULLमानों और स्ट्रिंग कोलेशन को संभालने के नियम भिन्न हो सकते हैं।UNIONऔरUNION ALLके साथ इस्तेमाल किया जा सकता है।PySpark के मामले में कमांड काफी भिन्न है, क्योंकि यह एक वितरित परिवेश में काम करता है। नीचे दिया गया कोड मानता है कि
df1औरdf2उन दो डेटा फ्रेम्स के नाम हैं जिनमें हमने ऊपर बनाई दो टेबल्स हैं। :SQL UNION का उपयोग करते समय 3 नियम और सामान्य त्रुटियाँ
यद्यपि
UNIONऔरUNION ALLशक्तिशाली हैं, वे सिंटैक्स के प्रति सख्त हैं। यदि आपकी क्वेरी त्रुटि दे रही है, तो संभव है कि वह इन तीन स्वर्ण नियमों में से किसी का उल्लंघन कर रही हो।1. कॉलम काउंट में असंगति
उपयोगकर्ताओं द्वारा मिलने वाली सबसे आम त्रुटि कॉलमों की संख्या में असंगति है। दो डेटासेट्स को मिलाने के लिए टेबल्स का "आकार" समान होना चाहिए। आप 3 कॉलम वाली टेबल को 2 कॉलम वाली टेबल के ऊपर स्टैक नहीं कर सकते।
त्रुटि:
समाधान: सुनिश्चित करें कि दोनों
SELECTस्टेटमेंट्स बिल्कुल समान संख्या में कॉलम मांगते हैं। यदि दूसरी टेबल में (जैसेdepartment) डेटा नहीं है, तो काउंट मिलाने के लिए आप प्लेसहोल्डर के रूप मेंNULLसेलेक्ट कर सकते हैं:2. डेटा टाइप संगतता
SQL परिणामों को स्थिति के आधार पर मिलाता है, न कि कॉलम नाम के आधार पर। आपकी पहली क्वेरी के पहले कॉलम का डेटा प्रकार दूसरी क्वेरी के पहले कॉलम के डेटा प्रकार से मेल खाना चाहिए (या संगत होना चाहिए)।
त्रुटि: यदि आप गलती से कॉलमों का क्रम बदल देते हैं, तो SQL एक संख्या (ID) को स्ट्रिंग (Name) के ऊपर स्टैक करने की कोशिश करता है, जिससे डेटा टाइप रूपांतरण त्रुटि होती है।
समाधान: हर
SELECTस्टेटमेंट में कॉलमों का क्रम बिल्कुल समान है, यह हमेशा जाँच लें, जो किUNIONके भीतर आता है।3. ORDER BY की सीमाएँ
ORDER BYक्लॉज़ कहाँ रखें, यह एक आम उलझन है। आपUNIONऑपरेशन के भीतर व्यक्तिगत सब-क्वेरियों को sort नहीं कर सकते; आप केवल अंतिम संयुक्त परिणाम को sort कर सकते हैं।त्रुटि: अंतिम क्वेरी से पहले
ORDER BYका प्रयोग करने पर सिंटैक्स त्रुटि आएगी।समाधान: अपने क्वेरी के बिलकुल अंत में
ORDER BYक्लॉज़ रखें। यह पूरे संयुक्त परिणाम सेट पर सॉर्ट लागू करता है।अंतिम विचार
SQL का उपयोग करके डेटा का कुशल प्रबंधन करने में
UNIONऔरUNION ALLके अनुप्रयोग को समझना आवश्यक है। जहाँUNIONकेवल विशिष्ट रिकॉर्ड चुनता है, वहींUNION ALLसभी रिकॉर्ड चुनता है, जिससे प्रदर्शन और परिणाम सेट के आकार पर असर पड़ता है। अपनी विशिष्ट आवश्यकताओं के अनुसार उपयुक्त फंक्शन चुनने के लिए इस ज्ञान का उपयोग करें।अधिक सीखने के लिए, निम्नलिखित स्रोतों को देखें: