Jointure gauche versus jointure externe gauche dans le serveur SQL

Quelle est la différence entre LEFT JOIN et LEFT OUTER JOIN ?

1277
demandé sur Quiver 2009-01-02 11:30:10

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? .

enter image description here

1851
répondu Lasse Vågsæther Karlsen 2017-05-23 10:31:37

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:

  1. INNER
  2. extérieur
  3. CROSS

  1. INNER JOIN - récupère les données si elles sont présentes dans les deux tableaux.

  2. OUTER JOIN sont des 3 :

    1. LEFT OUTER JOIN - récupère les données si elles sont présentes dans le tableau de gauche.
    2. RIGHT OUTER JOIN - récupère les données si elles sont présentes dans le tableau de droite.
    3. FULL OUTER JOIN - récupère les données si elles sont présentes dans l'un ou l'autre des deux tables.
  3. 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 clause FROM de la déclaration SELECT ), en utilisant des virgules pour les séparer.


Points à note:

  • si vous mentionnez simplement JOIN , alors par défaut c'est un INNER JOIN .
  • Un OUTER jointure doit être LEFT | RIGHT | FULL vous ne pouvez pas simplement dire OUTER JOIN .
  • vous pouvez laisser tomber OUTER mot-clé et juste dire LEFT JOIN ou RIGHT JOIN ou FULL 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

627
répondu sactiw 2014-05-14 09:38:02

Quelle est la différence entre une jointure gauche et jointure externe gauche?

rien . LEFT JOIN et LEFT OUTER JOIN sont équivalents.

281
répondu Mitch Wheat 2014-08-22 00:03:40
117
répondu Damian Drygiel 2013-10-28 23:02:37

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:

", Les mots INNER et OUTER sont en option dans toutes les formes. INNER est la valeur par défaut; LEFT , RIGHT , et FULL impliquent une jointure extérieure."

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.

54
répondu andrefsp 2015-05-23 03:42:32

rien à dire à part ceci: enter image description here

44
répondu Gisway 2015-08-12 22:05:00

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é

enter image description here

LEFT Join et Left Outer Join

enter image description here

résultats

enter image description here


droit joindre et droit joindre extérieur

enter image description here

résultats

enter image description here

42
répondu WorkSmarter 2017-12-14 23:06:26

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.

34
répondu frozenjim 2011-12-29 21:01:36

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.

26
répondu Yugo Amaryl 2014-04-17 21:15:11

il y a principalement trois types de jointure

  1. Intérieure: extrait des données, qui sont présents dans les deux tables
    • jointure interne seulement
  2. 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 "
  3. Cross Join: rejoint tout à tout

15
répondu Harsh 2012-01-18 12:59:50

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 enter image description here

14
répondu mass 2016-06-25 04:05:20

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.

13
répondu Delickate 2017-03-17 09:56:33

sucre syntactique, rend plus évident pour le lecteur occasionnel que l'assemblage n'est pas un intérieur.

12
répondu Unsliced 2012-08-10 20:28:11

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 et LEFT OUTER JOIN sont les mêmes.

selon DoFactory

0
répondu Moes 2017-03-14 00:53:11

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.

0
répondu Alfin E. R. 2018-09-19 06:13:16

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.

0
répondu TheEsnSiavashi 2018-09-25 23:04:56

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.

-6
répondu William Norris 2015-09-16 05:31:49