Ποια είναι η διαφορά μεταξύ του LEFT JOIN
και του LEFT OUTER JOIN
;
Σύμφωνα με την τεκμηρίωση: FROM (Transact-SQL):
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
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?.
Ποια είναι η διαφορά μεταξύ της αριστερής σύνδεσης και της αριστερής εξωτερικής σύνδεσης;
Τίποτα. Η LEFT JOIN
και η LEFT OUTER JOIN
είναι ισοδύναμες.
Η συντακτική ζάχαρη, καθιστά πιο προφανές στον απλό αναγνώστη ότι η σύνδεση δεν είναι εσωτερική.