mysql union comprehensive tutorial with union examples
यह ट्यूटोरियल MySQL UNION कमांड, इसके प्रकार, यूनियन बनाम यूनियन ऑल, और 2 या अधिक प्रश्नों के डेटा को संयोजित करने के लिए उदाहरण बताता है:
MySQL UNION का उपयोग कई सेलेक्ट क्वेरीज़ के परिणामों को एक परिणाम सेट में संयोजित करने के लिए किया जाता है। यह भी संभव है कि चयनित प्रश्नों में सभी जटिल प्रश्न / संचालन हों और संयुक्त परिणाम देने के लिए अन्य चयन विवरणों के साथ UNION का प्रदर्शन करें।
सर्वश्रेष्ठ साइटें मोबाइल फोनों पर देखने के लिए
UNION स्टेटमेंट की डिफ़ॉल्ट विशेषता डुप्लिकेट प्रविष्टियों या पंक्तियों को परिणामी पंक्तियों के सेट से निकालना होगा, हालांकि, यह डुप्लिकेट रिकॉर्ड प्राप्त करने के तरीके के साथ-साथ UNION ALL क्लॉज का उपयोग भी करता है।
आप क्या सीखेंगे:
- सेट थ्योरी के माध्यम से यूनिअन को समझना
- MySQL UNION क्या समस्या हल करता है
- MySQL यूनिअन बनाम यूनिअन सब
- निष्कर्ष
सेट थ्योरी के माध्यम से यूनिअन को समझना
यूनिअन ऑपरेशन को SET थ्योरी के सिद्धांतों से बहुत अच्छी तरह से समझा जा सकता है।
मान लें कि हमारे पास तालिकाएँ A & B हैं जैसा कि नीचे दिए गए सेटों द्वारा दर्शाया गया है और उनके पास कुछ अतिव्यापी डेटा (या यह पूरी तरह से असंबंधित भी हो सकता है) - UNION में दोनों तालिकाओं के डेटा का संयोजन शामिल होगा।
आइए एक उदाहरण देखते हैं जहां A & B में कुछ सामान्य तत्व हैं। UNION में डुप्लिकेट किए गए डुप्लिकेट मानों के साथ सेट A & B से सभी मान शामिल होंगे।
अब, क्या होगा अगर A & B सेट से असंतुष्ट हैं और उनमें कोई सामान्य तत्व नहीं हैं? यहाँ भी, UNION उसी परिणाम को लौटाएगा।
आइए उस परिदृश्य पर चर्चा करें जहां सेट के बीच ओवरलैपिंग तत्व हैं और हम चाहते हैं कि डुप्लिकेट मान भी परिणाम सेट में दिखाई दें।
MySQL एक तरीका प्रदान करता है जो नीचे दिए गए चित्र में दिखाए गए अनुसार UNION ALL विकल्प का उपयोग करता है।
MySQL UNION क्या समस्या हल करता है
MySQL UNION का उपयोग तब किया जाता है जब आपके पास 2 या अधिक तालिकाओं में समान डेटा होता है और आप व्यक्तिगत तालिकाओं के लिए SELECT स्टेटमेंट चलाने के बजाय दोनों तालिकाओं में समाहित डेटा का संयुक्त दृश्य देखना चाहते हैं।
उदाहरण के लिए - मान लीजिए कि 2 टेबल हैं - कर्मचारी तथा छात्र। और आप एक ऐसे व्यक्ति डेटाबेस पर काम कर रहे हैं जो सिर्फ सभी कर्मचारियों और छात्रों के लिए नाम, उम्र और जन्मतिथि रखना चाहता है।
UNION के बिना, आपको दोनों तालिकाओं के लिए अलग-अलग SELECT क्वेरी को निष्पादित करना होगा और फिर प्राप्त परिणाम सेट के साथ वांछित गणना करना होगा।
MySQL यूनिअन सिंटैक्स
नीचे दिए गए प्रश्नों में 2 का UNION या 2 से अधिक का चयन कथन होगा।
SELECT {column1}, {column2} FROM {table1} UNION (ALL | DISTINCT) SELECT {column3}, {column4} FROM {table2} UNION (ALL | DISTINCT) SELECT ...
वाक्य रचना के विभिन्न घटकों को देखने का प्रयास करें
- हम देख सकते हैं कि परिणामी पंक्ति को सेट करने के लिए UNION के साथ कई सेलेक्ट प्रश्नों को संयोजित करना संभव है।
- कॉलम नाम और डेटा प्रकार: यह समझना महत्वपूर्ण है कि जिन कॉलमों को हम संयोजित करना चाहते हैं, उनमें समान या संगत डेटा प्रकार होना चाहिए। उदाहरण के लिए: यदि आपके पास STR1 के रूप में कॉलम 1 है, तो कॉलम 3 को STRING भी होना चाहिए (या STRING संगत)।
- स्तंभ नाम और स्थिति UNION क्वेरी में पहले चयन कथन से निर्धारित होते हैं। उदाहरण के लिए, उपरोक्त सिंटैक्स में: कॉलम 1 और कॉलम 2 को परिणाम सेट में हेडर कॉलम के रूप में नामित किया गया है और कॉलम 3 और कॉलम 4 के मूल्यों को क्रमशः कॉलम 1 और कॉलम 2 में मैप किया गया है।
- डिफ़ॉल्ट रूप से UNION क्वेरी के परिणाम डुप्लिकेट प्रविष्टियों को निकालते हैं। उदाहरण के लिए, इस स्थिति में, यदि कोई डुप्लिकेट प्रविष्टि है जिसका सटीक मिलान है और कॉलम 1 और कॉलम 2 के लिए समान मान हैं तो उन पंक्तियों को परिणाम सेट से छोड़ दिया जाएगा।
यदि डुप्लिकेट वांछित हैं, तो हम UNION के साथ-साथ, ALL ’विकल्प का उपयोग कर सकते हैं।
का उपयोग अलग डिफ़ॉल्ट रूप से निहित है। कृपया ध्यान दें कि इसे स्पष्ट रूप से निर्दिष्ट किया जा सकता है और साथ ही अधिक पठनीयता भी हो सकती है।
आइए एक यूनिअन क्वेरी का एक नमूना उदाहरण देखें।
मान लीजिए कि 2 टेबल हैं - कर्मचारी और छात्र - प्रत्येक की व्यक्तिगत जानकारी।
CREATE TABLE employee (id INT PRIMARY KEY, name VARCHAR(100), age INT, dob DATE, department VARCHAR(100)); CREATE TABLE student (id INT PRIMARY KEY, name VARCHAR(100), age INT, dob DATE, department VARCHAR(100));
अब, नीचे दिखाए गए अनुसार इन दोनों तालिकाओं में कुछ डमी डेटा डालें:
INSERT INTO employee values (1,'Darren', 32, '1988-05-20', 'ENGINEERING'), (2,'Abhishek', 28, '1992-05-20', 'ACCOUNTING'), (3,'Amit', 30, '1990-09-20', 'ENGINEERING'), (4,'Steven', 40, '1980-05-21', 'HUMAN RESOURCES'), (5,'Kartik', 20, '2000-05-12', 'TRAINEE'); ---------------------------------------------- INSERT INTO student values (1,'Akash', 22, '1998-05-17', 'COMPUTER'), (2,'Ian', 26, '1994-06-18', 'COMPUTER'), (3,'Shirley', 19, '2001-11-20', 'MECHANICAL'), (4,'Joana', 21, '1999-05-21', 'ELECTRONICS'), (5,'Kartik', 20, '2000-05-12', 'COMPUTER');
जैसा कि आप ऊपर देख सकते हैं, हमने जानबूझकर एक पंक्ति जोड़ी है जिसमें नाम, आयु और जन्म तिथि के समान गुण हैं।
आइए अब देखते हैं कि हम UNION कमांड का उपयोग करके इन 2 टेबलों में डेटा को कैसे जोड़ सकते हैं। हम दोनों तालिकाओं से उपयोगकर्ता नाम और आयु की क्वेरी करेंगे।
सरल संघ
प्रश्न:
SELECT name, age FROM employee UNION SELECT name, age FROM student;
आपको परिणाम में 9 रिकॉर्ड दिखाई देंगे (जिसका अर्थ है कि उपरोक्त क्वेरी ने डुप्लिकेट प्रविष्टि को छोड़ दिया है)।
आउटपुट:
नाम | उम्र |
---|---|
इआन | २६ |
डैरेन | 32 |
अभिषेक | २। |
अमित | ३० |
स्टीवन | ४० |
Kartik | बीस |
आकाश | २२ |
शर्ली | १ ९ |
जोआना | इक्कीस |
सभी के साथ यूनिअन
सभी खंडों के साथ यूनिअन का उपयोग यह सुनिश्चित करेगा कि डुप्लिकेट प्रविष्टियों को भी प्रदर्शित किया जाए।
प्रश्न:
SELECT name, age FROM employee UNION ALL SELECT name, age FROM student;
आउटपुट:
नाम | उम्र |
---|---|
इआन | २६ |
डैरेन | 32 |
अभिषेक | २। |
अमित | ३० |
स्टीवन | ४० |
Kartik | बीस |
आकाश | २२ |
शर्ली | १ ९ |
जोआना | इक्कीस |
Kartik | बीस |
हालत के साथ यूनिअन
सेलेक्ट स्टेटमेंट में उन शर्तों को जोड़ दें, जहां हम 30 से कम उम्र के कर्मचारियों और 25 से कम उम्र के छात्रों का डेटा चाहते हैं।
प्रश्न:
SELECT name, age FROM employee where age <30 UNION SELECT name, age FROM student where age < 25;
आउटपुट:
नाम | उम्र |
---|---|
अमित | ३० |
अभिषेक | २। |
Kartik | बीस |
आकाश | २२ |
शर्ली | १ ९ |
जोआना | इक्कीस |
जैसा कि आप ऊपर देख सकते हैं, परिणाम सेट में व्यक्तिगत चयनित शर्तों के साथ संयुक्त परिणाम शामिल है जो मान्य हैं।
यूनिअन परिणाम का आदेश देना
UNION क्वेरी के परिणाम डिफ़ॉल्ट रूप से अनियंत्रित होते हैं।
परिणामी सेट में मौजूद एक कॉलम द्वारा ऑर्डर देने के लिए, यूनिऑन कमांड के अंत में एक ORDER BY क्लॉज निर्दिष्ट किया जा सकता है।
आइए एक ही कर्मचारी / छात्र डेटा का उपयोग करें और आयु के आधार पर UNION के परिणाम का आदेश दें।
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY age asc
आउटपुट:
नाम | उम्र |
---|---|
शर्ली | १ ९ |
Kartik | बीस |
जोआना | इक्कीस |
आकाश | २२ |
इआन | २६ |
अभिषेक | २। |
डैरेन | 32 |
स्टीवन | ४० |
उपरोक्त परिणाम सेट को बढ़ते हुए क्रम में आयु मानों द्वारा क्रमबद्ध किया जाता है। हम ORDER BY क्लॉज में स्तंभों को संदर्भित करने के लिए स्तंभ उपनामों का भी उपयोग कर सकते हैं।
उदाहरण के लिए: - नीचे की तरह एक क्वेरी भी एक ही परिणाम देगा।
SELECT name as customer_name, age as customer_age FROM employee UNION SELECT name, age FROM student ORDER BY customer_age asc
स्तंभ नाम के बजाय कॉलम स्थिति का उल्लेख करके ORDER BY क्लॉज़ का उपयोग करने का एक और तरीका है।
उदाहरण के लिए: उपरोक्त UNION क्वेरी में, हम नाम और आयु का चयन कर रहे हैं, जिसका अर्थ है कि ये कॉलम क्रमशः 1 और 2 स्थान पर हैं।
इसलिए आयु के अनुसार, हम वास्तविक कॉलम नाम के बजाय केवल स्थिति निर्दिष्ट कर सकते हैं।
इसलिए, नीचे क्वेरी समान परिणाम देगी।
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY 2 asc
MySQL यूनिअन बनाम यूनिअन सब
MySQL UNION के 2 वेरिएंट प्रदान करता है अर्थात् यूनिअन DISTINCT तथा यूनिअन ऑल
कृपया ध्यान दें कि DISTINCT डिफ़ॉल्ट रूप से निहित है, भले ही वह न कहा गया हो।
उन दोनों के बीच प्रमुख अंतर UNION ALL है जो डुप्लिकेट पंक्तियों को संयोजित और वापस करने की अनुमति देता है, जबकि UNION केवल डुप्लिकेट को हटाकर संयुक्त पंक्तियों को वापस करता है।
नीचे दी गई तालिका विवरण बताती है:
पैरामीटर | संघ | यूनिअन ऑल |
---|---|---|
परिभाषा | UNIST DISTINCT के समतुल्य है - परिणाम देते समय डेटा की डुप्लिकेट पंक्तियों को अनदेखा करता है | डुप्लिकेट सहित सभी पंक्तियों को लौटाता है |
वाक्य - विन्यास | {स्तंभ सूची} से चुनें {table1} संघ {ColumnList} से चुनें {table2} | {स्तंभ सूची} से चुनें {table1} यूनिअन ऑल {ColumnList} से चुनें {table2} |
डेटा आवश्यकताएँ | संयुक्त डेटा में समान डेटा प्रकार होने चाहिए और कई तालिकाओं से प्राप्त होने पर उसी क्रम में प्राप्त किया जाना चाहिए | यूनिअन के रूप में भी |
बार बार पूछे जाने वाले प्रश्न
Q # 1) क्या जोइन से तेज संघ है?
उत्तर: UNION और JOINs का उपयोग व्यावहारिक रूप से 2 विभिन्न उद्देश्यों के लिए किया जाता है।
तकनीकी रूप से कहें तो UNION, JOIN (विशेष रूप से बड़े डेटा सेट के लिए) की तुलना में अधिक तेज़ है क्योंकि UNION केवल व्यक्तिगत सेलेक्ट स्टेटमेंट्स से डेटा की पंक्तियों को मिलाता है।
Q # 2) UNION सब ऑपरेटर क्या है?
उत्तर: UNION की तरह, UNION ALL ऑपरेटर भी 2 चुनिंदा प्रश्नों के बीच UNION लौटाता है, लेकिन अंतर यह है कि इसमें डुप्लिकेट पंक्तियाँ / प्रविष्टियाँ भी शामिल हैं।
Q # 3) UNION और JOIN में क्या अंतर है?
उत्तर: UNION और JOIN दोनों का उपयोग 2 या अधिक तालिकाओं के डेटा को संयोजित करने के लिए किया जाता है। लेकिन प्राप्त परिणाम और डेटा प्राप्त करने के तरीके में भारी अंतर है।
JOIN और UNION के बीच समानताएं और अंतर नीचे दी गई तालिका में सूचीबद्ध हैं:
संघ | में शामिल होने के |
---|---|
कई तालिकाओं से डेटा को जोड़ती है | कई तालिकाओं से डेटा को जोड़ती है |
डेटा को टकराने या संयोजित करने के लिए किसी विशेष स्थिति की आवश्यकता नहीं होती है | JOIN एक JOIN स्थिति पर काम करता है जिसके लिए परिणाम सेट में आने वाले डेटा को मान्य करना आवश्यक है |
विभिन्न तालिकाओं के डेटा को परिणाम सेट की विभिन्न पंक्तियों के रूप में लिया जाता है | विभिन्न तालिकाओं के डेटा को एकल पंक्ति में जोड़ दिया जाता है - पूर्व के लिए- परिणाम सेट में एक पंक्ति में तालिका 1 से 2 कॉलम, तालिका 2 से 3 कॉलम शामिल हो सकते हैं और जोइन स्थिति और चयन क्वेरी के आधार पर हो सकते हैं |
UNIONs सरल और सरल हैं | JOINS को जटिल परिस्थितियों की आवश्यकता होती है और कई प्रकार के जुड़ावों के आधार पर जैसे INNER / OUTER आदि का उपयोग किया जा सकता है। |
निष्कर्ष
इस ट्यूटोरियल में, हमने 2 या अधिक सेलेक्ट स्टेटमेंट्स के डेटा को संयोजित करने के लिए MySQL UNION का उपयोग करने के बारे में सीखा है।
अलग-अलग तालिकाओं के बड़े सेट से समान डेटा को मिलाने और फिर संयुक्त डेटा पर विश्लेषण चलाने के लिए UNION कथन वास्तव में सहायक है।
यूनिअन कमांड एक सभी क्लॉज का भी समर्थन करता है जो डुप्लिकेट रिकॉर्ड के साथ ही प्राप्त करने में सक्षम बनाता है।
अनुशंसित पाठ
- MySQL क्या है और इसका उपयोग क्यों किया जाता है?
- SQL बनाम MySQL बनाम SQL सर्वर के बीच अंतर (उदाहरण के साथ)
- इनर ज्वाइन Vs Vs आउटर जॉइन: एक्सेप्ट डिफरेंस विथ एग्जाम्पल्स
- MySQL JOIN ट्यूटोरियल: इनर, आउटर, क्रॉस, लेफ्ट, राइट और सेल्फ
- कोड उदाहरणों के साथ MySQL क्रिएट ट्यूटोरियल देखें
- MySQL उदाहरणों के साथ तालिका ट्यूटोरियल बनाएँ
- MySQL अपडेट स्टेटमेंट ट्यूटोरियल - अपडेट सिंटैक्स और उदाहरण
- शीर्ष 40 सर्वश्रेष्ठ MySQL साक्षात्कार प्रश्न और उत्तर (2021 प्रश्न)