LEFT JOIN vs. LEFT OUTER JOIN στον SQL Server

Ποια είναι η διαφορά μεταξύ του LEFT JOIN και του LEFT OUTER JOIN;

Λύση

Σύμφωνα με την τεκμηρίωση: FROM (Transact-SQL):

 ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [  ] ]
    JOIN

Η λέξη-κλειδί OUTER επισημαίνεται ως προαιρετική (περικλείεται σε αγκύλες). Σε αυτή τη συγκεκριμένη περίπτωση, το αν καθορίσετε το OUTER ή όχι δεν έχει καμία διαφορά. Σημειώστε ότι ενώ τα υπόλοιπα στοιχεία της ρήτρας join είναι επίσης σημειωμένα ως προαιρετικά, το να τα αφήσετε έξω θα κάνει διαφορά.

Για παράδειγμα, ολόκληρο το μέρος type της ρήτρας JOIN είναι προαιρετικό, οπότε η προεπιλογή είναι INNER αν προσδιορίσετε μόνο το JOIN. Με άλλα λόγια, αυτό είναι νόμιμο:

SELECT *
FROM A JOIN B ON A.X = B.Y

Εδώ'είναι μια λίστα με ισοδύναμα συντακτικά:

A LEFT JOIN B            A LEFT OUTER JOIN B
A RIGHT JOIN B           A RIGHT OUTER JOIN B
A FULL JOIN B            A FULL OUTER JOIN B
A INNER JOIN B           A JOIN B

Ρίξτε επίσης μια ματιά στην απάντηση που άφησα σε αυτή την άλλη ερώτηση SO: SQL left join vs multiple tables on FROM line?.

Σχόλια (24)

Ποια είναι η διαφορά μεταξύ της αριστερής σύνδεσης και της αριστερής εξωτερικής σύνδεσης;

Τίποτα. Η LEFT JOIN και η LEFT OUTER JOIN είναι ισοδύναμες.

Σχόλια (8)

Η συντακτική ζάχαρη, καθιστά πιο προφανές στον απλό αναγνώστη ότι η σύνδεση δεν είναι εσωτερική.

Σχόλια (2)