Oracle डाटाबेस में, UNION
ऑपरेटर हमें दो प्रश्नों के परिणामों को एक परिणाम सेट में संयोजित करने की अनुमति देता है।
उदाहरण
मान लीजिए कि हमारे पास निम्नलिखित टेबल हैं:
SELECT * FROM Teachers;
SELECT * FROM Students;
परिणाम:
TEACHERID | TEACHERNAME |
---|---|
1 | वॉरेन |
2 | बेन |
3 | कैथी |
4 | कैथी |
5 | बिल |
6 | बिल |
विद्यार्थी | <थ>स्टूडेंटनाम|
---|---|
1 | फेय |
2 | जेट |
3 | स्पाइक |
4 | ऐन |
5 | वॉरेन |
6 | बिल |
यहां UNION
. का उपयोग करने का एक उदाहरण दिया गया है सभी शिक्षकों और छात्रों के नाम वापस करने के लिए ऑपरेटर:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;
परिणाम:
TEACHERNAME |
---|
बेन |
बिल |
कैथी |
ऐन |
फेय |
जेट |
स्पाइक |
वॉरेन |
डिफ़ॉल्ट रूप से, UNION
ऑपरेटर परोक्ष रूप से एक DISTINCT
लागू करता है कार्यवाही। दूसरे शब्दों में, यह डिफ़ॉल्ट रूप से केवल विशिष्ट मान देता है। तो उपरोक्त परिणामों में वॉरेन, कैथी और बिल में से केवल एक-एक है। यह इस तथ्य के बावजूद है कि संयुक्त तालिकाओं में वास्तव में दो वॉरेन, दो कैथिस और तीन बिल होते हैं (कैथी नामक दो शिक्षक हैं, एक शिक्षक और वॉरेन नामक एक ग्राहक, और दो को बिल कहा जाता है, साथ ही एक छात्र जिसे बिल कहा जाता है)।
डुप्लिकेट शामिल करें
हम ALL
का उपयोग कर सकते हैं परिणामों में डुप्लीकेट मान शामिल करने के लिए कीवर्ड:
SELECT TeacherName FROM Teachers
UNION ALL
SELECT StudentName FROM Students;
परिणाम:
TEACHERNAME |
---|
वॉरेन |
बेन |
कैथी |
कैथी |
बिल |
बिल |
फेय |
जेट |
स्पाइक |
इन |
वॉरेन |
बिल |
इस बार हमें आठ के बजाय बारह पंक्तियाँ मिलीं जो हमें अपने पहले उदाहरण में मिली थीं।
हम देख सकते हैं कि दोनों कैथी वापस आ गए और तीनों बिल वापस कर दिए गए।
कुछ बातें याद रखने योग्य हैं
ध्यान दें कि भाव संख्या में मेल खाना चाहिए और एक ही डेटा प्रकार समूह में होना चाहिए। इसलिए, हम निम्न कार्य नहीं कर सकते:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId FROM Students;
परिणाम:
ORA-01789: query block has incorrect number of result columns
या यह:
SELECT TeacherName FROM Teachers
UNION
SELECT StudentId FROM Students;
परिणाम:
ORA-01790: expression must have same datatype as corresponding expression
हालांकि, हम TO_CHAR()
. जैसे कार्यों का उपयोग कर सकते हैं कॉलम को उपयुक्त डेटा प्रकार समूह में बदलने के लिए:
SELECT TeacherName FROM Teachers
UNION
SELECT TO_CHAR(StudentId) FROM Students;
परिणाम:
TEACHERNAME 1 2 3 4 5 6 Ben Bill Cathy Warren