sql - बाएं जुड़ने और बाहरी छोड़ने के बीच अंतर क्या है?




oracle join left-join outer-join (2)

OUTER कीवर्ड सबसे लोकप्रिय एसक्यूएल वितरण के लिए वैकल्पिक है, जिसका अर्थ है कि एक LEFT JOIN और एक LEFT OUTER JOIN बीच बिल्कुल कोई अंतर नहीं है

इस सवाल का पहले से ही उत्तर दिया गया है:

मैंने 2 टेबल बनाये हैं

CREATE TABLE table1(customerName VARCHAR(20),custid NUMBER ,order_id NUMBER ,price NUMBER );
CREATE TABLE table2(id NUMBER ,salary NUMBER );

अब, मैंने प्रश्नों का उपयोग करने की कोशिश की

SELECT t1.customername,t1.custid,t2.salary FROM table1 t1 left join table2 t2 ON t1.custid = t2.id;
SELECT t1.customername,t1.custid,t2.salary FROM table1 t1 left outer join table2 t2 ON t1.custid = t2.id;

लेकिन मुझे एक ही आउटपुट मिलता है। क्या आंतरिक रूप से उनके काम में कोई अंतर है? या दोनों ही हैं !?


आंतरिक जुड़ने की आवश्यकता होती है कि एक संबंधित आईडी के साथ एक रिकॉर्ड शामिल तालिका में मौजूद है।

बाहरी जुड़ाव बाईं तरफ के रिकॉर्ड वापस कर देगा, भले ही सही पक्ष के लिए कुछ भी मौजूद न हो।

उदाहरण के लिए, आपके पास ऑर्डर और ऑर्डर डिस्प्ले टेबल है। वे "ऑर्डर आईडी" से संबंधित हैं।

आदेश

  • आदेश कामतत्व
  • ग्राहक का नाम

ऑर्डर का विवरण

  • OrderDetailID
  • आदेश कामतत्व
  • उत्पाद का नाम
  • मात्रा
  • मूल्य

अनुरोध

SELECT Orders.OrderID, Orders.CustomerName
  FROM Orders 
 INNER JOIN OrderDetails
    ON Orders.OrderID = OrderDetails.OrderID

केवल ऑर्डर लौटाएगा जिसमें ऑर्डर डिस्प्ले टेबल में कुछ भी है।

यदि आप इसे बाहरी बाएं जॉइन में बदल देते हैं

SELECT Orders.OrderID, Orders.CustomerName
  FROM Orders 
  LEFT JOIN OrderDetails
    ON Orders.OrderID = OrderDetails.OrderID

तो यह ऑर्डर तालिका से रिकॉर्ड्स वापस कर देगा, भले ही उनके पास कोई ऑर्डर डिस्काउंट रिकॉर्ड न हो।

आप ऑर्डर खोजने के लिए इसका उपयोग कर सकते हैं जिनके पास कोई ऑर्डर डिस्प्ले नहीं है, जहां कोई ऑर्डर WHERE OrderDetails.OrderID IS NULL , WHERE OrderDetails.OrderID IS NULL





sql oracle join left-join outer-join