Quelle est la différence entre JOIN et UNION?


252

Quelle est la difference entre JOINet UNION? Puis-je avoir un exemple?


Tout DBS moderne, comme MariaDB , implémente une commande UNION JOIN. Il s'agit d'une commande SQL & nbsp; 3 , mais elle n'est pas bien connue ou utilisée. Apprenez-en plus sur UNION JOIN .
Auston

Réponses:


301

UNIONplace les lignes des requêtes les unes après les autres, tout en JOINcréant un produit cartésien et en le sous-ensemble - des opérations complètement différentes. Exemple trivial de UNION:

mysql> SELECT 23 AS bah
    -> UNION
    -> SELECT 45 AS bah;
+-----+
| bah |
+-----+
|  23 | 
|  45 | 
+-----+
2 rows in set (0.00 sec)

exemple trivial similaire de JOIN:

mysql> SELECT * FROM 
    -> (SELECT 23 AS bah) AS foo 
    -> JOIN 
    -> (SELECT 45 AS bah) AS bar
    -> ON (33=33);
+-----+-----+
| foo | bar |
+-----+-----+
|  23 |  45 | 
+-----+-----+
1 row in set (0.01 sec)

6
Pouvez-vous s'il vous plaît me dire ce qu'est un UNION-JOINet comment puis-je l'accomplir en SQL standard? Maria DB a une commande union join, mais pas d'autres bases de données. Merci.
Erran Morad

73

Les jointures et les unions peuvent être utilisées pour combiner les données d'une ou plusieurs tables. La différence réside dans la façon dont les données sont combinées.

En termes simples, les jointures combinent les données dans de nouvelles colonnes . Si deux tables sont jointes, les données de la première table sont affichées dans un ensemble de colonnes à côté de la deuxième colonne de la même ligne.

Les syndicats combinent les données dans de nouvelles lignes. Si deux tables sont «réunies», les données de la première table se trouvent dans un ensemble de lignes et les données de la deuxième table dans un autre ensemble. Les lignes sont dans le même résultat.

Voici une représentation visuelle d'une jointure. Les colonnes des tableaux A et B sont combinées en un seul résultat.

entrez la description de l'image ici

Chaque ligne du résultat contient des colonnes des DEUX tableaux A et B. Les lignes sont créées lorsque les colonnes d'un tableau correspondent aux colonnes d'un autre. Cette correspondance est appelée condition de jointure.

Cela rend les jointures vraiment super pour rechercher des valeurs et les inclure dans les résultats. Ceci est généralement le résultat de la dénormalisation (inversion de la normalisation) et implique l'utilisation de la clé étrangère dans une table pour rechercher des valeurs de colonne en utilisant la clé primaire dans une autre.

Comparez maintenant la représentation ci-dessus avec celle d'un syndicat. Dans une union, chaque ligne du résultat provient d'une table OU de l'autre. Dans une union, les colonnes ne sont pas combinées pour créer des résultats, les lignes sont combinées.

entrez la description de l'image ici

Les jointures et les unions peuvent être utilisées pour combiner les données d'une ou plusieurs tables en un seul résultat. Ils procèdent tous les deux de différentes manières. Alors qu'une jointure est utilisée pour combiner des colonnes de différentes tables, l'union est utilisée pour combiner des lignes.

La source


4
Ceci est un exemple visuel impressionnant. J'étais presque sûr d'avoir compris après les autres réponses, mais cela a complètement clarifié les choses.
seadoggie01

Pour l'exemple de jointure, techniquement parlant, le résultat ne devrait-il pas y avoir 10 colonnes?
Bharath Ram

60

SYNDICAT combine les résultats de deux requêtes ou plus en un seul jeu de résultats qui inclut toutes les lignes qui appartiennent à toutes les requêtes de l'union.

En utilisant JOINs , vous pouvez récupérer des données de deux tables ou plus en fonction des relations logiques entre les tables. Les jointures indiquent comment SQL doit utiliser les données d'une table pour sélectionner les lignes d'une autre table.

L'opération UNION est différente de l'utilisation de JOIN qui combinent des colonnes de deux tables.

UNION Exemple:

SELECT 1 AS [Column1], 2 AS [Column2]
UNION
SELECT 3 AS [Column1], 4 AS [Column2]

Production:

Column1    Column2
-------------------
1          2
3          4

JOIN Exemple:

SELECT a.Column1, b.Column2 FROM TableA a INNER JOIN TableB b ON a.Id = b.AFKId

Cela générera toutes les lignes des deux tables pour lesquelles la condition a.Id = b.AFKIdest vraie.


Join peut récupérer des données d'une * ou plusieurs tables. Pas nécessairement deux
Kennet Celeste

51

Vous pouvez voir les mêmes explications schématiques pour les deux, mais elles sont totalement déroutantes.

Pour UNION:

Entrez la description de l'image ici

Pour JOIN:

Entrez la description de l'image ici


9
Ces images impliquent que FULL OUTER JOINc'est la même chose que UNION, qui ont des différences
icc97

1
Cette réponse souligne que ces images prêtent à confusion (de quelle OMI elles sont), mais ne continue pas d'expliquer pourquoi ni de fournir des éclaircissements par rapport à la question d'origine.
Josh D.

1
Chaque image avec des diagrammes explique parfaitement la situation. Il n'y a pas d'image unique qui puisse fusionner tous les diagrammes. Ce sera plus déroutant.
Java Main

41

JOINDRE:

Une jointure est utilisée pour afficher des colonnes portant des noms identiques ou différents provenant de tables différentes. La sortie affichée aura toutes les colonnes affichées individuellement. Autrement dit, les colonnes seront alignées les unes à côté des autres.

SYNDICAT:

L'opérateur UNION set est utilisé pour combiner les données de deux tables qui ont des colonnes avec le même type de données. Lorsqu'une UNION est effectuée, les données des deux tables seront collectées dans une seule colonne ayant le même type de données.

Par exemple:

Voir les deux tableaux ci-dessous:

Table t1
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2

Table t2
manufacturer_id manufacturer
1 ABC Gmbh
2 DEF Co KG

Maintenant, pour effectuer un type JOIN, la requête est présentée ci-dessous.

SELECT articleno, article, manufacturer
FROM t1 JOIN t2 ON (t1.manufacturer_id =
t2.manufacturer_id);

articelno article manufacturer
1 hammer ABC GmbH
2 screwdriver DEF Co KG

C'est une jointure.

UNION signifie que vous devez créer des tableaux ou des ensembles de résultats avec la même quantité et le même type de colonnes et que vous les ajoutez ensemble aux tableaux / ensembles de résultats. Regardez cet exemple:

Table year2006
Articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2

Table year2007
Articleno article price manufacturer_id
1 hammer 6 $ 3
2 screwdriver 7 $ 4

SELECT articleno, article, price, manufactruer_id
FROM year2006
UNION
SELECT articleno, article, price, manufacturer_id
FROM year2007

articleno article price manufacturer_id
1 hammer 3 $ 1
2 screwdriver 5 $ 2
1 hammer 6 $ 3
2 screwdriver 7 $ 4

21

Ce sont des choses complètement différentes.

Une jointure vous permet de relier des données similaires dans différentes tables.

Une union renvoie les résultats de deux requêtes différentes sous la forme d'un seul jeu d'enregistrements.


9

Union fait ressembler deux requêtes à une seule. Les jointures servent à examiner deux tables ou plus dans une seule instruction de requête


3

Les jointures et les unions peuvent être utilisées pour combiner les données d'une ou plusieurs tables. La différence réside dans la façon dont les données sont combinées.

En termes simples, les jointures combinent les données dans de nouvelles colonnes. Si deux tables sont jointes, les données de la première table sont affichées dans un ensemble de colonnes à côté de la deuxième colonne de la même ligne.

Les syndicats combinent les données dans de nouvelles lignes. Si deux tables sont «réunies», les données de la première table se trouvent dans un ensemble de lignes et les données de la deuxième table dans un autre ensemble. Les lignes sont dans le même résultat.


1

N'oubliez pas que l'union fusionnera les résultats ( SQL Server pour être sûr) (fonctionnalité ou bogue?)

select 1 as id, 3 as value
union
select 1 as id, 3 as value

id, valeur

1,3

select * from (select 1 as id, 3 as value) t1 inner join (select 1 as id, 3 as value) t2 on t1.id = t2.id

id, valeur, id, valeur

1,3,1,3


6
Ceci est conforme à la norme ANSI, UNION ALL ne fusionne pas les résultats
vzczc

1
Voir aussi UNIONvs UNION ALL stackoverflow.com/questions/49925/…
Jaider

0

1. La clause SQL Joins est utilisée pour combiner des enregistrements de deux tables ou plus dans une base de données. Un JOIN est un moyen de combiner des champs de deux tables en utilisant des valeurs communes à chacun.

2. L'opérateur SQL UNION combine le résultat de deux ou plusieurs instructions SELECT. Chaque instruction SELECT dans l'UNION doit avoir le même nombre de colonnes. Les colonnes doivent également avoir des types de données similaires. En outre, les colonnes de chaque instruction SELECT doivent être dans le même ordre.

par exemple: table 1 clients / table 2 commandes

jointure interne:

CHOISIR ID, NOM, MONTANT, DATE

DES CLIENTS


ORDRES DE JOINTURE INTÉRIEURE


ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

syndicat:

CHOISIR ID, NOM, MONTANT, DATE


DES CLIENTS


ORDRES DE JOINTURE GAUCHE


ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID

SYNDICAT

SÉLECTIONNEZ L'ID, LE NOM, LE MONTANT ET LA DATE DES CLIENTS


ORDRES DE JOINTURE DROITE


ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;


0

Utiliser UNION

UNION combine les résultats de deux requêtes ou plus en un seul jeu de résultats qui inclut toutes les lignes qui appartiennent à toutes les requêtes de l'union.

UNION Exemple:
SELECT 121 AS [Colonne1], 221 AS [Colonne2]
SYNDICAT
SELECT 321 AS [Colonne1], 422 AS [Colonne2]
Production:

Colonne1 Colonne2
-------------------
121 221
321 422

Utilisation de JOIN

JOINs, vous pouvez récupérer des données de deux tables ou plus en fonction des relations logiques entre les tables.

JOIN Exemple:
SELECT a.Column1, b.Column2 FROM TblA a INNER JOIN TblB b ON a.Id = b.id


-1

Dans l'abstrait, ils sont similaires, en ce sens que deux tableaux ou ensembles de résultats sont combinés, mais UNION est vraiment pour combiner des ensembles de résultats avec le MÊME NOMBRE DE COLONNES avec les COLONNES AYANT DES TYPES DE DONNÉES SIMILAIRES. La STRUCTURE est la même, seules les nouvelles lignes sont ajoutées.

Dans les jointures, vous pouvez combiner des tables / jeux de résultats avec n'importe quelle structure possible, y compris une jointure cartésienne où il n'y a PAS de colonnes partagées / similaires.


-1

L'opérateur UNION sert uniquement à combiner deux ou plusieurs instructions SELECT.

Alors que JOIN sert à sélectionner des lignes dans chaque table, soit par la méthode interne, externe, gauche ou droite.

Reportez-vous ici et ici . Il y a une meilleure explication avec des exemples.


-1

L'opération d'union est le résultat combiné de l' agrégat vertical des lignes, l'opération d'union est le résultat combiné de l' agrégat horizontal des colonnes.


-3

J'aime penser la différence générale comme étant:

  • JOINS rejoindre les tables
  • UNION (et tous) combine des requêtes.

1
Cela soulève la question - l'adhésion est mentionnée en termes de «rejoindre» et l'union est mentionnée en termes de «combine» inexpliquée. Quoi qu'il en soit, que pensez-vous que vous ajouteriez au-delà d'autres réponses très votées de 10 ans qui rendent cela "utile"? (Rhétorique.) Voir le texte de la souris sur la flèche de vote.
philipxy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.