Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle यूनियन ऑपरेटर समझाया गया

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं कैसे बता सकता हूं कि मेरा ओरेकल सिस्टम यूनिकोड या मल्टीबाइट वर्णों का समर्थन करने के लिए सेट है या नहीं?

  2. तालिका नाम के चारों ओर उद्धरण चिह्न वास्तव में क्या करते हैं?

  3. क्या एक स्क्रिप्ट में एकाधिक ट्रिगर्स बनाने का कोई तरीका है?

  4. EMCLI के साथ ब्लैकआउट

  5. एक स्ट्रिंग में एक वर्ण की सभी घटनाओं को खोजने के लिए Oracle क्वेरी