Quelle est la difference entre LEFT JOIN
et LEFT OUTER JOIN
?
sql-server
tsql
left-join
outer-join
KG Sosa
la source
la source
OUTER
mot-clé est facultatif.Réponses:
Selon la documentation: FROM (Transact-SQL) :
Le mot
OUTER
- clé est marqué comme facultatif (entre crochets). Dans ce cas spécifique, que vous spécifiezOUTER
ou non ne fait aucune différence. Notez que tandis que les autres éléments de la clause join sont également marqués comme facultatifs, les laisser de côté fera une différence.Par exemple, la partie type entière de la
JOIN
clause est facultative, auquel cas la valeur par défaut estINNER
si vous spécifiez simplementJOIN
. En d'autres termes, c'est légal:Voici une liste de syntaxes équivalentes:
Jetez également un œil à la réponse que j'ai laissée sur cette autre question SO: SQL left join vs plusieurs tables sur la ligne FROM? .
la source
INNER JOIN
à droite et justeJOIN
à gauche dans la liste des équivalents?JOIN
s également.Au niveau supérieur, il existe principalement 3 types de jointures:
INNER JOIN - récupère les données si elles sont présentes dans les deux tables.
OUTER JOIN sont de 3 types:
LEFT OUTER JOIN
- récupère les données si elles sont présentes dans le tableau de gauche.RIGHT OUTER JOIN
- récupère les données si elles sont présentes dans le tableau de droite.FULL OUTER JOIN
- récupère les données si elles sont présentes dans l'un des deux tableaux.CROSS JOIN , comme son nom l'indique, fait
[n X m]
que tout se joint à tout.Similaire au scénario où nous listons simplement les tables à joindre (dans la
FROM
clause de l'SELECT
instruction), en utilisant des virgules pour les séparer.Points à noter:
JOIN
par défaut, c'est unINNER JOIN
.OUTER
jointure doit êtreLEFT
|RIGHT
|FULL
vous ne pouvez pas simplement direOUTER JOIN
.OUTER
mot-clé et dire simplementLEFT JOIN
ouRIGHT JOIN
ouFULL JOIN
.Pour ceux qui souhaitent mieux les visualiser, veuillez consulter ce lien: Une explication visuelle des jointures SQL
la source
CROSS JOIN
la même chose queFULL JOIN
?Cross Join
etFull Outer Join
... semble en quelque sorte similaire.Rien .
LEFT JOIN
etLEFT OUTER JOIN
sont équivalents.la source
OUTER
option est facultative.Je suis un DBA PostgreSQL, pour autant que je puisse comprendre la différence entre les jointures externes ou non externes, la différence est un sujet qui a fait l'objet de nombreuses discussions sur Internet. Jusqu'à aujourd'hui, je n'ai jamais vu de différence entre ces deux; Je suis donc allé plus loin et j'essaie de trouver la différence entre ceux-ci. À la fin, j'ai lu toute la documentation à ce sujet et j'ai trouvé la réponse à cela,
Donc, si vous regardez la documentation (au moins dans PostgreSQL), vous pouvez trouver cette phrase:
« Les mots
INNER
etOUTER
sont facultatifs sous toutes ses formes.INNER
Est la valeur par défautLEFT
,RIGHT
etFULL
impliquent une jointure externe. »En d'autres mots,
LEFT JOIN
et sont lesLEFT OUTER JOIN
mêmesRIGHT JOIN
et sont lesRIGHT OUTER JOIN
mêmesJ'espère que cela peut être une contribution pour ceux qui essaient encore de trouver la réponse.
la source
Left Join
etLeft Outer Join
sont une seule et même chose . Le premier est le raccourci pour le second. On peut en dire autant de la relationRight Join
etRight Outer Join
. La démonstration illustrera l'égalité. Des exemples de travail de chaque requête ont été fournis via SQL Fiddle . Cet outil permettra une manipulation pratique de la requête.Donné
Jointure gauche et jointure externe gauche
Résultats
Jointure droite et jointure droite externe
Résultats
la source
Je trouve plus facile de penser aux jointures dans l'ordre suivant:
Jusqu'à ce que je comprenne ce modèle (relativement) simple, JOINS était toujours un peu plus un art noir. Maintenant, ils ont un sens parfait.
J'espère que cela aide plus qu'il ne confond.
la source
Pourquoi LEFT / RIGHT et LEFT OUTER / RIGHT OUTER sont-ils les mêmes? Expliquons pourquoi ce vocabulaire. Comprenez que les jointures GAUCHE et DROITE sont des cas spécifiques de la jointure OUTER, et ne peuvent donc pas être autre chose que OUTER LEFT / OUTER RIGHT. La jointure OUTER est également appelée FULL OUTER par opposition aux jointures LEFT et RIGHT qui sont des résultats PARTIELS de la jointure OUTER. En effet:
Il est maintenant clair pourquoi ces opérations ont des alias, et il est clair que seuls 3 cas existent: INNER, OUTER, CROSS. Avec deux sous-cas pour l'OUTER. Le vocabulaire, la façon dont les enseignants expliquent cela, ainsi que certaines réponses ci-dessus, donnent souvent l'impression qu'il existe de nombreux types de jointures. Mais c'est en fait très simple.
la source
JOIN
impliqueINNER JOIN
" correspond à votre raisonnement pour le vocabulaire des jointures externes?Pour répondre à ta question
Il est mentionné dans l'article msdn: https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx
Donc, la liste suivante montre les syntaxes de jointure équivalentes avec et sans OUTER
Autres syntaxes équivalentes
Je recommande vivement Dotnet Mob Artice: se joint au serveur SQL
la source
Il n'y a que 3 jointures:
C) Jointure externe:
J'espère que ça aiderait.
la source
Il existe principalement trois types de JOIN
Extérieur: sont de trois types
Cross Join: joint tout à tout
la source
Le sucre syntaxique, rend plus évident pour le lecteur occasionnel que la jointure n'est pas intérieure.
la source
Dans le cadre de cette question, je souhaite également publier les 2 opérateurs 'APPLY':
SE JOINT :
INNER JOIN = JOIN
JOINT EXTERIEUR
LEFT OUTER JOIN = LEFT JOIN
RIGHT OUTER JOIN = RIGHT JOIN
FULL OUTER JOIN = FULL JOIN
CROSS JOIN
SELF-JOIN : Ce n'est pas exactement un type de jointure distinct. Il s'agit essentiellement de joindre une table à elle-même en utilisant l'une des jointures ci-dessus. Mais j'ai pensé qu'il valait la peine d'être mentionné dans le contexte des discussions JOIN car vous entendrez ce terme de la part de nombreux développeurs SQL.
APPLIQUER :
https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/
https://sqlhints.com/2016/10/23/outer-apply-in-sql-server/
Exemple réel, quand utiliser OUTER / CROSS APPLY dans SQL
Je trouve que l'opérateur APPLY est très bénéfique car il donne de meilleures performances que d'avoir à faire le même calcul dans une sous-requête. Ils remplacent également de nombreuses fonctions analytiques dans les anciennes versions de SQL Server. C'est pourquoi je crois qu'après avoir été à l'aise avec JOINS, un développeur SQL devrait essayer d'apprendre les opérateurs APPLY ensuite.
la source