Quelle est la difference entre LEFT JOIN
et LEFT OUTER JOIN
?
Quelle est la difference entre LEFT JOIN
et LEFT OUTER JOIN
?
Réponses:
Selon la documentation: FROM (Transact-SQL) :
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Le mot OUTER
- clé est marqué comme facultatif (entre crochets). Dans ce cas spécifique, que vous spécifiez OUTER
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 est INNER
si vous spécifiez simplement JOIN
. En d'autres termes, c'est légal:
SELECT *
FROM A JOIN B ON A.X = B.Y
Voici une liste de syntaxes équivalentes:
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
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? .
INNER JOIN
à droite et juste JOIN
à gauche dans la liste des équivalents?
JOIN
s également.
Pour répondre à votre question, il n'y a pas de différence entre LEFT JOIN et LEFT OUTER JOIN, ils sont exactement les mêmes que ceux qui ont été dit ...
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 un INNER JOIN
.OUTER
jointure doit être LEFT
| RIGHT
| FULL
vous ne pouvez pas simplement dire OUTER JOIN
.OUTER
mot-clé et dire simplement LEFT JOIN
ou RIGHT JOIN
ou FULL JOIN
.Pour ceux qui souhaitent mieux les visualiser, veuillez consulter ce lien: Une explication visuelle des jointures SQL
CROSS JOIN
la même chose que FULL JOIN
?
Cross Join
et Full Outer Join
... semble en quelque sorte similaire.
Quelle est la différence entre la jointure gauche et la jointure externe gauche?
Rien . LEFT JOIN
et LEFT OUTER JOIN
sont équivalents.
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:
En d'autres mots,
LEFT JOIN
et sont les LEFT OUTER JOIN
mêmes
RIGHT JOIN
et sont les RIGHT OUTER JOIN
mêmes
J'espère que cela peut être une contribution pour ceux qui essaient encore de trouver la réponse.
Left Join
et Left Outer Join
sont une seule et même chose . Le premier est le raccourci pour le second. On peut en dire autant de la relation Right Join
et Right 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
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.
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:
Table A | Table B Table A | Table B Table A | Table B Table A | Table B
1 | 5 1 | 1 1 | 1 1 | 1
2 | 1 2 | 2 2 | 2 2 | 2
3 | 6 3 | null 3 | null - | -
4 | 2 4 | null 4 | null - | -
null | 5 - | - null | 5
null | 6 - | - null | 6
OUTER JOIN (FULL) LEFT OUTER (partial) RIGHT OUTER (partial)
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.
JOIN
implique INNER JOIN
" correspond à votre raisonnement pour le vocabulaire des jointures externes?
Pour répondre à ta question
Dans SQL Server, la syntaxe des jointures OUTER est facultative
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
LEFT OUTER JOIN => LEFT JOIN
RIGHT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN
Autres syntaxes équivalentes
INNER JOIN => JOIN
CROSS JOIN => ,
Je recommande vivement Dotnet Mob Artice: se joint au serveur SQL
C) Jointure externe:
There are three type of outer join
1) Left Outer Join = Left Join
2) Right Outer Join = Right Join
3) Full Outer Join = Full Join
J'espère que ça aiderait.
Il existe principalement trois types de JOIN
Extérieur: sont de trois types
Cross Join: joint tout à tout
Le sucre syntaxique, rend plus évident pour le lecteur occasionnel que la jointure n'est pas intérieure.
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.
OUTER
mot-clé est facultatif.