Jaka jest różnica między JOIN a UNION?

Jaka jest różnica między JOIN a UNION? Mogę prosić o przykład?

Author: fragilewindows, 2009-05-25

15 answers

UNION umieszcza linie z zapytań po sobie, podczas gdy JOIN tworzy iloczyn kartezjański i podzestawia go - zupełnie inne operacje. Trywialny przykład UNION:

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

Podobny trywialny przykład 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)
 323
Author: Alex Martelli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-10 02:31:02

Joins i Unions mogą być używane do łączenia danych z jednej lub więcej tabel. Różnica polega na tym, jak dane są łączone.

W prostych słowach, łączy połącz dane w nowe kolumny . Jeżeli dwie tabele są połączone ze sobą, wtedy dane z pierwszej tabeli są wyświetlane w jednym zestawie kolumn obok kolumny drugiej tabeli w tym samym wierszu.

Związki łączą dane w nowe wiersze. Jeśli dwie tabele są "połączone" razem, to dane z pierwszej tabeli znajdują się w jednej zestaw wierszy, a dane z drugiej tabeli w innym zestawie. Wiersze mają ten sam wynik.

Oto wizualne przedstawienie połączenia. Kolumny tabeli A i B są łączone w jeden wynik.

Tutaj wpisz opis obrazka

Każdy wiersz w wyniku zawiera kolumny z tabeli a i B. wiersze są tworzone, gdy kolumny z jednej tabeli pasują do kolumn z drugiej. Ten mecz nazywa się warunek join.

To sprawia, że joins naprawdę świetnie sprawdza się w wyszukiwaniu wartości i uwzględnianie ich w wynikach. Zwykle jest to wynikiem denormalizacji (odwrócenia normalizacji)i polega na użyciu klucza obcego w jednej tabeli, aby wyszukać wartości kolumn za pomocą klucza podstawowego w innej.

Teraz Porównaj powyższe przedstawienie z przedstawieniem związku. W unii każdy wiersz w wyniku pochodzi z jednej lub drugiej tabeli. W związku kolumny nie są łączone w celu utworzenia wyników, wiersze są łączone.

Tutaj wpisz opis obrazka

Zarówno połączenia jak i związki mogą być użyte do połącz dane z jednej lub więcej tabel w jeden wynik. Obydwoje robią to w inny sposób. Podczas gdy join jest używany do łączenia kolumn z różnych tabel, union jest używany do łączenia wierszy.

Źródło

 107
Author: Humoyun Ahmad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-28 04:04:44

UNION łączy wyniki dwóch lub więcej zapytań w jeden zestaw wyników, który zawiera wszystkie wiersze należące do wszystkich zapytań w Unii.

Używając JOINs, możesz pobierać dane z dwóch lub więcej tabel na podstawie relacji logicznych między tabelami. Łączniki wskazują, w jaki sposób SQL powinien używać danych z jednej tabeli do wybierania wierszy w innej tabeli.

Operacja UNION różni się od użycia Joinsów, które łączą kolumny z dwóch stoły.

Przykład Unii:

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

Wyjście:

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

Dołącz przykład:

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

Wyświetli wszystkie wiersze z obu tabel, dla których warunek a.Id = b.AFKId jest prawdziwy.

 62
Author: Kirtan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-25 06:01:23

Możesz zobaczyć te same schematy objaśnień dla obu, ale są one całkowicie mylące.

Dla Związku:

Tutaj wpisz opis obrazka

Dla JOIN:

Tutaj wpisz opis obrazka

 55
Author: Java Main,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-12 14:21:38

Dołącz:

Łącznik służy do wyświetlania kolumn z tym samym lub różne nazwy z różnych tabel. Wyświetlane wyjście wszystkie kolumny będą wyświetlane indywidualnie. Czyli kolumny zostaną wyrównane obok siebie.

Unia:

Operator zbioru unijnego służy do łączenia danych z dwóch tabele, które mają kolumny o tym samym typie danych. Po wykonaniu Unii dane z obu tabel będą zebrane w jednej kolumnie o tej samej typ danych.

Na przykład:

Zobacz dwie tabele poniżej:

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

Teraz dla wykonywania typu JOIN zapytanie jest pokazane poniżej.

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

To jest połączenie.

Unia oznacza, że musisz tabele lub resultset z taką samą ilość i typ kolumn i dodajesz to do tabele/wyniki razem. Spójrz na ten przykład:

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
 42
Author: Ganesh Narayan Tharol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-12 14:10:45

To zupełnie inne rzeczy.

A join pozwala powiązać podobne dane w różnych tabelach.

Unia zwraca wyniki dwóch różnych zapytań jako pojedynczy zestaw rekordów.

 23
Author: adeshsuryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-12 14:09:27

Union sprawia, że dwa zapytania wyglądają jak jedno. Joins służy do sprawdzania dwóch lub więcej tabel w pojedynczej instrukcji zapytania

 11
Author: James L,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-12 17:33:59

Joins i unions mogą być używane do łączenia danych z jednej lub więcej tabel. Różnica polega na tym, jak dane są łączone.

W prostych słowach łączy połącz dane w nowe kolumny. Jeżeli dwie tabele są połączone ze sobą, wtedy dane z pierwszej tabeli są wyświetlane w jednym zestawie kolumn obok kolumny drugiej tabeli w tym samym wierszu.

Związki łączą dane w nowe wiersze. Jeżeli dwie tabele są "połączone" razem, wtedy dane z pierwszej tabeli znajdują się w jednym zestawie wierszy, a dane z drugiego stołu w innym zestawie. Wiersze mają ten sam wynik.

 4
Author: VAHEED,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-12 14:32:58

Pamiętaj, że union Scali wyniki ( SQL Server dla pewności)(funkcja czy błąd?)

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

Id, wartość

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, value,id, value

1,3,1,3

 2
Author: MonsterMagnet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-12 14:07:43

1. Klauzula SQL Joins służy do łączenia rekordów z dwóch lub więcej tabel w bazie danych. JOIN to sposób łączenia pól z dwóch tabel za pomocą wartości wspólnych dla każdej z nich.

2. Operator SQL UNION łączy wynik dwóch lub więcej poleceń SELECT. Każda deklaracja SELECT w Unii musi mieć taką samą liczbę kolumn. Kolumny muszą również posiadać podobne typy danych. Ponadto kolumny w każdej instrukcji SELECT muszą być w tej samej kolejności.

Dla przykład: tabela 1 Klienci / tabela 2 zamówienia

INNER join:

SELECT ID, NAME, AMOUNT, DATE

OD KLIENTÓW

INNER JOIN ORDERS

ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Unia:

SELECT ID, NAME, AMOUNT, DATE

OD KLIENTÓW

LEFT JOIN ORDERS

ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID

Unia

SELECT ID, NAME, AMOUNT, DATE 
 OD KLIENTÓW

RIGHT JOIN ORDERS

ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

 1
Author: ian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-23 14:05:39

Ussing UNION

UNION jest połączeniem wyników dwóch lub więcej zapytań w jeden zestaw wyników, który zawiera wszystkie wiersze należące do wszystkich zapytań w Unii.

UNION Example:
SELECT 121 AS [Column1], 221 AS [Column2]
UNION
SELECT 321 AS [Column1], 422 AS [Column2]
Output:

Column1    Column2
-------------------
121          221
321          422

Ussing Dołącza

JOINs, można pobierać dane z dwóch lub więcej tabel na podstawie relacji logicznych między tabelami.

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

 0
Author: user6341745,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-29 06:28:57

W skrócie, są one podobne, ponieważ dwie tabele lub zestawy wyników są łączone, ale UNION jest tak naprawdę do łączenia zestawów wyników z taką samą liczbą kolumn z kolumnami o podobnych typach danych. Struktura jest taka sama, dodawane są tylko nowe wiersze.

W joinesach można łączyć tabele/zbiory wyników z dowolną możliwą strukturą, w tym z kartezjańskim joinemem, gdzie nie ma wspólnych/podobnych kolumn.

 -1
Author: danbk99,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-08 22:41:08

Operator Unii służy tylko do łączenia dwóch lub więcej poleceń SELECT.

Podczas gdy JOIN służy do wybierania wierszy z każdej tabeli, za pomocą metody wewnętrznej, zewnętrznej, lewej lub prawej.

Zobacz tutaj i tutaj . Jest lepsze wyjaśnienie z przykładami.

 -1
Author: Nishad Up,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-12 14:22:44

Operacja Union jest połączonym wynikiem agregatu pionowego wierszy, Operacja Unii jest połączonym wynikiem agregatu poziomego kolumn.

 -1
Author: R.Baldha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-29 05:22:18

Lubię myśleć o ogólnej różnicy jako o:

  • dołącza do tabel
  • UNION (et all) łączy zapytania.
 -3
Author: laurie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-04 01:09:30