Jointure gauche versus jointure externe gauche dans le serveur SQL
Quelle est la différence entre LEFT JOIN
et LEFT OUTER JOIN
?
17 réponses
selon la documentation: de (Transact-SQL) :
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
le mot-clé OUTER
est marqué comme facultatif (entre crochets), et ce que cela signifie dans ce cas est que si vous le spécifiez ou non ne fait aucune différence. Notez que si les autres éléments de la clause de jointure sont également marqués comme optionnels, laisser them out fera bien sûr une différence.
pour par exemple, la totalité de la partie type de la clause JOIN
est optionnelle, auquel cas la valeur par défaut est INNER
si vous spécifiez simplement JOIN
. En d'autres termes, ceci 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 oeil à la réponse que j'ai laissé sur cette autre question SO: SQL gauche rejoindre vs plusieurs tables sur la ligne? .
pour répondre à votre question il N'y a pas de différence entre joindre à gauche et à gauche jointure externe, ils sont exactement les mêmes qui a dit...
au niveau supérieur il y a principalement 3 types de jointures:
- INNER
- extérieur
- CROSS
-
INNER JOIN - récupère les données si elles sont présentes dans les deux tableaux.
-
OUTER JOIN sont des 3 :
-
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 ou l'autre des deux tables.
-
-
CROSS JOIN , comme son nom l'indique, fait
[n X m]
qui unit tout à tout.
Semblable au scénario où nous énumérons simplement les tables à joindre (dans la clauseFROM
de la déclarationSELECT
), en utilisant des virgules pour les séparer.
Points à note:
- si vous mentionnez simplement
JOIN
, alors par défaut c'est unINNER JOIN
. - Un
OUTER
jointure doit êtreLEFT
|RIGHT
|FULL
vous ne pouvez pas simplement direOUTER JOIN
. - vous pouvez laisser tomber
OUTER
mot-clé et juste direLEFT JOIN
ouRIGHT JOIN
ouFULL JOIN
.
pour ceux qui souhaitez visualiser dans une meilleure façon, s'il vous plaît aller à ce lien: une explication visuelle de SQL joint
Quelle est la différence entre une jointure gauche et jointure externe gauche?
rien . LEFT JOIN
et LEFT OUTER JOIN
sont équivalents.
je suis un PostgreSQL DBA, aussi loin que je pouvais comprendre la différence entre l'extérieur ou non, les jointures externes différence est un sujet qui a beaucoup de discussion tout autour de l'internet. Jusqu'à aujourd'hui, je n'ai jamais vu une différence entre ces deux-là; J'ai donc été plus loin et j'essaie de trouver la différence entre ces deux-là. À la fin j'ai lu toute la documentation à ce sujet et j'ai trouvé la réponse pour ceci,
donc si vous regardez la documentation (au moins dans PostgreSQL) vous pouvez trouver cette phrase:
en d'autres termes,
LEFT JOIN
et LEFT OUTER JOIN
sont les mêmes
RIGHT JOIN
et RIGHT OUTER JOIN
sont les mêmes
j'espère qu'il peut être une contribution pour ceux qui essaient encore de trouver la réponse.
Left Join
et Left Outer Join
sont l'un et l' même . La première est la abréviation de la seconde. On peut dire la même chose de la relation Right Join
et Right Outer Join
. La démonstration illustrera l'égalité. Des exemples pratiques de chaque requête ont été fournis via SQL Fiddle . Cet outil permettra de manipuler la requête.
Donné
résultats
droit joindre et droit joindre extérieur
résultats
je trouve plus facile de penser à des jointures dans l'ordre suivant:
- CROSS JOIN - un produit Cartésien de deux tables.
- joint intérieur-une jonction croisée avec un filtre ajouté.
- jointure extérieure - jointure intérieure comportant des éléments manquants (de la table de gauche ou de droite)) ajoutés par la suite.
Jusqu'à ce que j'ai compris ce modèle (relativement) simple, les joints ont toujours été un peu plus d'un art noir. Maintenant, ils font tout son sens.
Espérons que cette aide plus qu'il ne les confond.
Why are LEFT/RIGHT and LEFT OUTER / RIGHT OUTER the same? Expliquons pourquoi ce vocabulaire. Comprendre que les joints gauche et droite sont des cas spécifiques de la jointure externe, et donc ne pourrait pas être autre chose que gauche externe/droite externe. La jointure extérieure est également appelée complète externe par opposition à gauche et à droite jointures qui sont partielle résultats de la jointure extérieure. 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 les opérations ont des alias, aussi bien qu'il est clair que seulement 3 cas existent: interne, externe, croisé. Avec deux sous-cas pour l'EXTÉRIEUR. Le vocabulaire, la façon dont les enseignants expliquent cela, ainsi que certaines réponses ci-dessus, font souvent penser qu'il ya beaucoup de différents types de rejoindre. Mais c'est en fait très simple.
il y a principalement trois types de jointure
- Intérieure: extrait des données, qui sont présents dans les deux tables
- jointure interne seulement
-
extérieur: sont de trois types
- gauche externe - - fetches données présentes seulement dans la table de gauche et l'état correspondant
- droit extérieur - - fetches données présentes uniquement dans la table de droite et l'appariement condition
- FULL OUTER - - récupère les données présentes l'une ou de la table
- (à gauche ou à droite ou complet) la jointure extérieure peut être écrite sans écrire "extérieur "
-
Cross Join: rejoint tout à tout
pour répondre à votre question
Dans Sql Server rejoint la syntaxe EXTÉRIEURE est facultatif
il est mentionné dans l'article de msdn: https://msdn.microsoft.com/en-us/library/ms177634 (v=sql.130).aspx
ainsi la liste suivante montre rejoindre syntaxes équivalentes avec et sans OUTER
LEFT OUTER JOIN => LEFT JOIN
RIGT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN
autres syntaxes équivalentes
INNER JOIN => JOIN
CROSS JOIN => ,
fortement recommandé Dotnet Mob Artice: se joint au serveur Sql
il n'y a que 3 jointures:
- A) jointure croisée = cartésienne (par exemple: Table A, Table B)
- B) jointure interne = jointure (par exemple: Table A jointure / table interne de jointure) B)
-
C) jointure extérieure:
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 aidera.
sucre syntactique, rend plus évident pour le lecteur occasionnel que l'assemblage n'est pas un intérieur.
LEFT JOIN
effectue une jointure à partir de la première table (la plus à gauche), puis de n'importe quel enregistrement correspondant de la deuxième table (la plus à droite).
LEFT JOIN
etLEFT OUTER JOIN
sont les mêmes.
dans la jointure gauche et la jointure extérieure gauche effectuant les mêmes opérations.
essentiellement la jointure de gauche fournit tous les enregistrements du tableau 1 et seulement les enregistrements correspondants du tableau 2.
il ne fournit pas les enregistrements non appariés du tableau 2.
comme il est déjà mentionné ici, il n'y a pas de différence. Le monde de la clé OUTER
pourrait être retiré du dictionnaire de mots clés SQL sans que nous perdions la puissance expressive sur les requêtes que nous sommes en mesure d'écrire.
en outre, nous n'avons pas besoin des mots-clés RIGHT
et LEFT
car un seul d'entre eux est suffisant. C'est parce que SELECT * FROM A RIGHT JOIN B on A.ID = B.ID
est exactement le même que SELECT * FROM B LEFT JOIN A on A.ID = B.ID
. J'ai trouvé tous ces termes déroutants pour les étudiants et les novices.
je sais que c'est vieux cependant voulu mettre mes deux cents. Je comprends que le LEFT JOIN
doit être la même que LEFT OUTER JOIN
mais dans mon expérience, j'ai vu un LEFT JOIN
tirez des Résultats différents d'un LEFT OUTER JOIN
j'ai donc commencé à utiliser le mot-clé OUTER
pour être plus précis et adéquat. Les rangées qui auraient dû revenir dans un LEFT JOIN
n'ont pas où comme quand j'utiliserais un LEFT OUTER JOIN
il a fait. J'essayais d'expliquer ça à un collègue quand il était incapable d'obtenir les rangs dont il avait besoin ainsi donc j'ai décidé de Google la différence afin d'avoir une sorte de soutien pour lui montrer. Cela pourrait être une chose spécifique au serveur SQL à laquelle je ne suis pas certain. Je dirais qu'en pratique, il serait plus judicieux d'énoncer explicitement que vous voulez une jointure externe pour se produire. Juste mon avis.