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

SQL में UNION बनाम UNION ALL

UNION और UNION ALL के आउटपुट और प्रदर्शन में अंतर जानें: UNION डुप्लिकेट हटाता है जबकि UNION ALL उन्हें शामिल करता है।
· 8 मि॰ पढ़ें

AI के साथ खोजें

SQL जगत में, कई क्वेरियों से डेटा को मिलाकर देखना एक बुनियादी आवश्यकता है, और इसे पूरा करने के लिए SQL में UNION और UNION ALL जैसे शक्तिशाली फंक्शन उपलब्ध हैं। 

जैसा कि आप देखेंगे, SQL में UNION और UNION ALL फंक्शनों के सूक्ष्म अंतर को समझना कुशल क्वेरींग और डेटा प्रबंधन के लिए अनिवार्य है। यह ट्यूटोरियल सहायक डेटासेट्स का उपयोग करके इनके प्रमुख समानताएँ, अंतर, और उपयोग परिदृश्यों को समझाता है ताकि आप अपनी SQL क्वेरियों को अनुकूलित कर सकें।

संक्षिप्त उत्तर: SQL UNION बनाम UNION ALL 

मुख्य अंतर यह है कि UNION डुप्लिकेट रिकॉर्ड हटाता है, जबकि UNION ALL सभी डुप्लिकेट सहित सभी रिकॉर्ड रखता है। यह भेद न केवल परिणाम में पंक्तियों की संख्या बदलता है, बल्कि प्रदर्शन पर भी असर डालता है।

FeatureUNIONUNION ALL
Duplicatesडुप्लिकेट रिकॉर्ड हटाता हैसभी रिकॉर्ड रखता है (डुप्लिकेट सहित)
Performanceधीमा (डुप्लिकेट ढूँढने के लिए डेटा को sort/hash करना पड़ता है)तेज़ (डेटा को सीधे परिणाम में जोड़ता है)
Operationसेट थ्योरी (Mathematical Union)एपेंडिंग / स्टैकिंग परिणाम

आइए दो नमूना टेबल्स employees_2023 और employees_2024 पर विचार करें, जो दो अलग-अलग वर्षों के कर्मचारी रिकॉर्ड दर्शाती हैं।

SELECT *
FROM employees_2023

employee_id

name

department

1

Alice

HR

2

Bob

IT

3

Charlie

Finance

SELECT *
FROM employees_2024

employee_id

name

department

2

Bob

IT

3

Charlie

Finance

4

David

Marketing

अब, UNION फंक्शन का उपयोग करके अपनी दोनों टेबल्स को जोड़ते हैं।

SELECT employee_id, name, department FROM employees_2023 
UNION 
SELECT 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 
UNION ALL 
SELECT 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 स्टेटमेंट में कॉलमों की संख्या समान होनी चाहिए। साथ ही, उनके डेटा प्रकार समान होने चाहिए और कॉलमों का क्रम भी समान होना चाहिए। फंक्शन को समझने के लिए, नीचे दो नमूना टेबल बनाते हैं।

CREATE TABLE sales_team (
    employee_id INT,
    employee_name VARCHAR(50)
);
INSERT INTO sales_team (employee_id, employee_name) VALUES
(1, 'Alice'),
(2, 'Bob'),
(3, 'Charlie');
CREATE TABLE support_team ( 
employee_id INT, 
employee_name VARCHAR(50)
 );
INSERT INTO support_team (employee_id, employee_name) VALUES 
(3, 'Charlie'), 
(4, 'David'), 
(5, 'Eve');

उपरोक्त कोड इस ट्यूटोरियल में उपयोग होने वाली दोनों टेबल्स, क्रमशः sales_team और support_team, बना देगा। आप नीचे दिए गए कोड से टेबल्स देख सकते हैं।

SELECT * 
FROM sales_team

Records in the <code624

sales_team टेबल में रिकॉर्ड। चित्र: लेखक 

SELECT * 
FROM support_team

Records in the <code624

support_team टेबल में रिकॉर्ड। चित्र: लेखक 

ये छोटी टेबल्स हैं जिनमें तीन-तीन रिकॉर्ड हैं, और कॉलम नाम स्वयं स्पष्ट हैं। अब जब हमारी दोनों टेबल्स बन गई हैं, तो UNION फंक्शन लागू करते हैं।

SELECT employee_id, employee_name
    FROM sales_team
   UNION
SELECT employee_id, employee_name
    FROM support_team;

Output from the <code624

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
UNION ALL
SELECT employee_id, employee_name
    FROM support_team;

Output from the <code624

UNION ALL फंक्शन का आउटपुट। चित्र: लेखक 

आप देख सकते हैं कि इस मामले में डुप्लिकेट प्रविष्टियाँ दोहराई गई हैं और हटाई नहीं गई हैं।

SQL में UNION ALL के उपयोग के मामले क्या हैं?

यहाँ UNION ALL फंक्शन के कुछ सामान्य उपयोग के मामले दिए गए हैं।

  • डुप्लिकेट सहित परिणामों को मिलाना: जब आपको कई क्वेरियों के परिणामों को मिलाकर सभी डुप्लिकेट सहित रखना हो, तब UNION ALL का उपयोग करें।
  • प्रदर्शन संबंधी विचार: UNION ALL UNION की तुलना में समय-कुशल है, क्योंकि इसे डुप्लिकेट हटाने का अतिरिक्त चरण नहीं करना पड़ता।
  • विभिन्न अवधियों से डेटा एकत्र करना: अलग-अलग अवधियों या स्रोतों से डेटा एकत्र करते समय, और डुप्लिकेट प्रविष्टियों को बनाए रखना आवश्यक हो, तो 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
UNION ALL
SELECT employee_id, employee_name
    FROM support_team;

इन SQL डायलैक्ट्स में बुनियादी कमांड समान रहते हैं, कुछ सूक्ष्मताओं और अंतरों के साथ:

  1. NULLs और Collations का प्रबंधन: अलग-अलग SQL डायलैक्ट्स में NULL मानों और स्ट्रिंग कोलेशन को संभालने के नियम भिन्न हो सकते हैं।
  2. प्रदर्शन अनुकूलन: प्रदर्शन अनुकूलन और निष्पादन दक्षता बदल सकती है।
  3. त्रुटि प्रबंधन और चेतावनियाँ: इन फंक्शनों का उपयोग करते समय अलग-अलग डायलैक्ट्स त्रुटियों और चेतावनियों को भिन्न तरीके से संभाल सकते हैं।
  4. प्लेटफ़ॉर्म-विशिष्ट फंक्शन और फ़ीचर: कुछ SQL डायलैक्ट्स अतिरिक्त फंक्शन या फ़ीचर प्रदान कर सकते हैं जिन्हें अधिक जटिल परिदृश्यों में UNION और UNION ALL के साथ इस्तेमाल किया जा सकता है।

PySpark के मामले में कमांड काफी भिन्न है, क्योंकि यह एक वितरित परिवेश में काम करता है। नीचे दिया गया कोड मानता है कि df1 और df2 उन दो डेटा फ्रेम्स के नाम हैं जिनमें हमने ऊपर बनाई दो टेबल्स हैं। :

df1.union(df2)

SQL UNION का उपयोग करते समय 3 नियम और सामान्य त्रुटियाँ

यद्यपि UNION और UNION ALL शक्तिशाली हैं, वे सिंटैक्स के प्रति सख्त हैं। यदि आपकी क्वेरी त्रुटि दे रही है, तो संभव है कि वह इन तीन स्वर्ण नियमों में से किसी का उल्लंघन कर रही हो।

1. कॉलम काउंट में असंगति

उपयोगकर्ताओं द्वारा मिलने वाली सबसे आम त्रुटि कॉलमों की संख्या में असंगति है। दो डेटासेट्स को मिलाने के लिए टेबल्स का "आकार" समान होना चाहिए। आप 3 कॉलम वाली टेबल को 2 कॉलम वाली टेबल के ऊपर स्टैक नहीं कर सकते।

त्रुटि:

-- This will fail because the column counts do not match
SELECT employee_id, name, department 
FROM employees_2023
UNION
SELECT employee_id, name 
FROM employees_2024;

समाधान: सुनिश्चित करें कि दोनों SELECT स्टेटमेंट्स बिल्कुल समान संख्या में कॉलम मांगते हैं। यदि दूसरी टेबल में (जैसे department) डेटा नहीं है, तो काउंट मिलाने के लिए आप प्लेसहोल्डर के रूप में NULL सेलेक्ट कर सकते हैं:

SELECT employee_id, name, department FROM employees_2023
UNION
SELECT employee_id, name, NULL as 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
UNION
SELECT name, employee_id FROM employees_2024;

समाधान: हर SELECT स्टेटमेंट में कॉलमों का क्रम बिल्कुल समान है, यह हमेशा जाँच लें, जो कि UNION के भीतर आता है।

3. ORDER BY की सीमाएँ

ORDER BY क्लॉज़ कहाँ रखें, यह एक आम उलझन है। आप UNION ऑपरेशन के भीतर व्यक्तिगत सब-क्वेरियों को sort नहीं कर सकते; आप केवल अंतिम संयुक्त परिणाम को sort कर सकते हैं।

त्रुटि: अंतिम क्वेरी से पहले ORDER BY का प्रयोग करने पर सिंटैक्स त्रुटि आएगी।

-- INCORRECT SYNTAX
SELECT employee_id, name FROM employees_2023 
ORDER BY employee_id -- You cannot sort here!
UNION
SELECT employee_id, name FROM employees_2024;

समाधान: अपने क्वेरी के बिलकुल अंत में ORDER BY क्लॉज़ रखें। यह पूरे संयुक्त परिणाम सेट पर सॉर्ट लागू करता है।

-- CORRECT SYNTAX
SELECT employee_id, name FROM employees_2023
UNION
SELECT employee_id, name FROM employees_2024
ORDER BY 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 कोड से डेटा का विश्लेषण करने के लिए जानना चाहिए।
Vikash Singh

लेखक

Vikash Singh

डेटा साइंस, आर्टिफिशियल इंटेलिजेंस, एनालिटिक्स और डेटा रणनीति में अनुभवी विशेषज्ञ।

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

SQL UNION और UNION ALL के बीच प्राथमिक अंतर क्या है?

UNION डुप्लिकेट रिकॉर्ड हटाता है, जबकि UNION ALL सभी डुप्लिकेट शामिल करता है।

क्या UNION और UNION ALL के बीच प्रदर्शन में अंतर होता है?

हाँ, UNION सामान्यतः धीमा होता है क्योंकि यह डुप्लिकेट हटाता है।

क्या ऐसे विशिष्ट उपयोग मामले हैं जहाँ UNION ALL, UNION पर वरीय होता है?

UNION ALL तब वरीय होता है जब आपको सभी रिकॉर्ड, डुप्लिकेट सहित, चाहिए हों, जैसे रिपोर्टिंग और विश्लेषण में।

मुझे SQL UNION का उपयोग UNION ALL के बजाय कब करना चाहिए?

जब आपको बिना डुप्लिकेट के संयुक्त परिणाम सेट चाहिए, तब UNION का उपयोग करें।

विभिन्न SQL डायलैक्ट्स, UNION और UNION ALL के उपयोग को कैसे प्रभावित करते हैं?

हालाँकि मूल सिंटैक्स सुसंगत है, प्रदर्शन, NULLs के प्रबंधन, और कोलेशन में विभिन्न SQL डायलैक्ट्स के बीच हल्के अंतर हो सकते हैं।

विषय