MySQL में UNION का उपयोग करके एकाधिक SELECT क्वेरी संयोजित करना
एक से अधिक टेबल या जटिल शर्तों से डेटा को एक ही परिणाम सेट में संयोजित करने के लिए UNION ऑपरेटर का उपयोग करें। यह डुप्लिकेट पंक्तियों को स्वचालित रूप से हटा देता है (अगर UNION ALL न उपयोग किया जाए)।
उदाहरण के साथ पूर्ण कार्यान्वयन
पहली टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable1 (Value1 INT, Value2 INT);
mysql> INSERT INTO DemoTable1 VALUES(10, 29), (100, 190), (40, 101);
दूसरी टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable2 (Number1 INT, Number2 INT);
mysql> INSERT INTO DemoTable2 VALUES(100, 290), (200, 390), (50, 170);
दोनों टेबल के रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable1;
mysql> SELECT * FROM DemoTable2;
UNION के साथ क्वेरी संयोजित करना
mysql> (SELECT Value1, Value2 FROM DemoTable1)
UNION
(SELECT Number1 AS Value1, Number2 AS Value2 FROM DemoTable2)
ORDER BY Value1 DESC;
आउटपुट:
+--------+--------+
| Value1 | Value2 |
+--------+--------+
| 200 | 390 |
| 100 | 290 |
| 100 | 190 |
| 50 | 170 |
| 40 | 101 |
| 10 | 29 |
+--------+--------+
6 rows in set (0.04 sec)
मुख्य बिंदु:
- कॉलम संरेखण: दोनों SELECT में समान संख्या और क्रम में कॉलम होने चाहिए
- एलियास: दूसरी क्वेरी में
AS Value1, AS Value2का उपयोग करके कॉलम नाम मिलाए गए - डुप्लिकेट हटाना: UNION स्वचालित रूप से डुप्लिकेट पंक्तियाँ हटाता है
- ORDER BY: अंत में लागू होता है, व्यक्तिगत SELECT पर नहीं
UNION vs UNION ALL
| ऑपरेटर | व्यवहार | प्रदर्शन |
|---|---|---|
| UNION | डुप्लिकेट हटाता है | धीमा (सॉर्ट/हैश आवश्यक) |
| UNION ALL | सभी पंक्तियाँ रखता है | तेज़ (कोई डुप्लिकेट जांच नहीं) |
उन्नत उपयोग: जटिल क्वेरी संयोजन
(SELECT id, name, 'active' AS status FROM users WHERE active = 1)
UNION ALL
(SELECT id, name, 'inactive' FROM users WHERE active = 0)
UNION ALL
(SELECT id, name, 'pending' FROM users WHERE active IS NULL)
ORDER BY status, name;
यह विभिन्न शर्तों के परिणामों को एकीकृत परिणाम सेट में जोड़ता है।