MySQL + SQL · Lesson 75

MySQL में UNION और UNION ALL

UNION क्या है?

UNION दो या अधिक SELECT statements के result sets को मिलाकर एक single result बनाता है। यह duplicate rows को automatically हटा देता है। सभी SELECT statements में column की संख्या और data type एक जैसे होने चाहिए।

UNION को mathematics के set union की तरह समझें — अगर एक ही student दो tables में है, तो UNION उसे सिर्फ एक बार दिखाएगा।

  • हर SELECT में columns की संख्या बराबर होनी चाहिए।
  • Column के data types compatible होने चाहिए।
  • Final result में column names पहले SELECT से आते हैं।
  • Duplicate rows हट जाती हैं

UNION ALL क्या है?

UNION ALL भी दो या अधिक SELECT statements के results को मिलाता है, लेकिन यह सभी rows रखता है — duplicates सहित। यह UNION से तेज़ होता है क्योंकि duplicate हटाने की प्रक्रिया नहीं होती।
  • सभी duplicate rows रखी जाती हैं
  • UNION से तेज़ — sorting की ज़रूरत नहीं।
  • जब duplicates नहीं होंगे या सभी rows चाहिए तब UNION ALL use करें।

UNION vs UNION ALL – अंतर

FeatureUNIONUNION ALL
Duplicatesहटा देता हैरखता है
Speedधीमा (sorting होती है)तेज़ (extra processing नहीं)
Use caseUnique rows चाहिए तबसभी rows चाहिए तब
Result rowsकम या बराबरहमेशा दोनों का जोड़
Memoryज़्यादा (temp sort)कम

Syntax

-- UNION Syntax
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;

-- UNION ALL Syntax
SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;

नियम: दोनों SELECT में columns की संख्या और data types एक जैसे होने चाहिए।

SQL Examples with Output

Setup – Tables बनाएं

CREATE DATABASE school_db;
USE school_db;

CREATE TABLE students_a (
  roll_no INT,
  name VARCHAR(60),
  city VARCHAR(40)
);

CREATE TABLE students_b (
  roll_no INT,
  name VARCHAR(60),
  city VARCHAR(40)
);

INSERT INTO students_a VALUES
  (1, 'Aarav Sharma', 'Khurja'),
  (2, 'Priya Verma', 'Aligarh'),
  (3, 'Ravi Singh', 'Meerut');

INSERT INTO students_b VALUES
  (3, 'Ravi Singh', 'Meerut'),  -- duplicate
  (4, 'Neha Gupta', 'Agra'),
  (5, 'Amit Yadav', 'Mathura');

Example 1: UNION का उपयोग

SELECT roll_no, name, city FROM students_a
UNION
SELECT roll_no, name, city FROM students_b;
Output (5 rows — Ravi Singh एक बार दिखेगा):
+---------+--------------+---------+
| 1 | Aarav Sharma | Khurja |
| 2 | Priya Verma | Aligarh |
| 3 | Ravi Singh | Meerut |
| 4 | Neha Gupta | Agra |
| 5 | Amit Yadav | Mathura |
+---------+--------------+---------+

Example 2: UNION ALL का उपयोग

SELECT roll_no, name, city FROM students_a
UNION ALL
SELECT roll_no, name, city FROM students_b;
Output (6 rows — Ravi Singh दो बार दिखेगा):
+---------+--------------+---------+
| 1 | Aarav Sharma | Khurja |
| 2 | Priya Verma | Aligarh |
| 3 | Ravi Singh | Meerut |
| 3 | Ravi Singh | Meerut | <-- duplicate
| 4 | Neha Gupta | Agra |
| 5 | Amit Yadav | Mathura |
+---------+--------------+---------+

Example 3: UNION के साथ ORDER BY

SELECT roll_no, name FROM students_a
UNION
SELECT roll_no, name FROM students_b
ORDER BY name;

ध्यान रखें: ORDER BY सिर्फ एक बार — पूरी query के अंत में लिखें।

Real-World Use Cases

  • School ERP: XII-A, XII-B, XII-C sections की student list एक attendance report में combine करें।
  • Fee System: पिछले 3 महीनों में fee देने वाले सभी students दिखाएं।
  • Library System: दो branches से एक दिन में issued सभी books।
  • E-commerce: दो seller tables के सभी products दिखाएं।
  • Reporting: Archive table और current table को मिलाकर पूरी history दिखाएं।

Common Mistakes

  • अलग column count: दोनों SELECT में columns की संख्या बराबर होनी चाहिए — नहीं तो ERROR आएगा।
  • Incompatible data types: INT और VARCHAR को मिलाने पर result गलत हो सकता है।
  • बीच में ORDER BY: ORDER BY केवल अंत में लिखें, किसी एक SELECT में नहीं।
  • UNION ALL की जगह UNION: जब duplicates नहीं हैं तो UNION ALL use करें — तेज़ होगा।
  • Column names की गलतफहमी: Final result में column name पहले SELECT से आता है।

Practice Tasks

  1. teachers_math और teachers_science tables बनाएं, 1 common teacher रखें। UNION और UNION ALL का output compare करें।
  2. class10, class11, class12 — तीन tables को UNION ALL से combine करके total rows count करें।
  3. दोनों student tables से unique cities की list निकालें UNION से।
  4. Viva question लिखें: "UNION में column count अलग हो तो क्या होगा?" — Answer दें।

Summary

  • UNION = Combine करो + Duplicates हटाओ (धीमा)
  • UNION ALL = Combine करो + सब रखो (तेज़)
  • दोनों में same columns और compatible data types ज़रूरी हैं।
  • ORDER BY सिर्फ पूरी query के अंत में लिखें।
  • Unique report के लिए UNION; सब data चाहिए तो UNION ALL।
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.