Każdy nowoczesny DBS, jak MariaDB , implementuje polecenie UNION JOIN. To polecenie SQL & nbsp; 3 , ale nie jest dobrze znane ani używane. Dowiedz się więcej na temat UNION JOIN .
Auston,
Odpowiedzi:
301
UNIONumieszcza po sobie wiersze z zapytań, a jednocześnie JOINtworzy produkt kartezjański i dzieli go na części - zupełnie inne operacje. Trywialny przykład UNION:
Czy możesz mi powiedzieć, co to jest UNION-JOINi jak mogę to osiągnąć w standardowym języku SQL? Maria DB ma polecenie union join, ale inne bazy danych nie. Dzięki.
Erran Morad
72
Połączenia i związki mogą być używane do łączenia danych z jednej lub więcej tabel. Różnica polega na sposobie łączenia danych.
Mówiąc prościej, sprzężenia łączą dane w nowe kolumny . Jeśli dwie tabele zostaną połączone, dane z pierwszej tabeli zostaną wyświetlone w jednym zestawie kolumn obok kolumny drugiej tabeli w tym samym wierszu.
Związki łączą dane w nowe wiersze. Jeśli dwie tabele są „zjednoczone” razem, dane z pierwszej tabeli znajdują się w jednym zestawie wierszy, a dane z drugiej tabeli w innym zestawie. Wiersze mają ten sam wynik.
Oto wizualne przedstawienie złączenia. Kolumny tabeli A i B są łączone w jeden wynik.
Każdy wiersz w wyniku zawiera kolumny z OBA tabeli A i B. Wiersze są tworzone, gdy kolumny z jednej tabeli pasują do kolumn z drugiej. To dopasowanie nazywa się warunkiem dołączenia.
To sprawia, że złączenia są naprawdę świetne do wyszukiwania wartości i włączania ich do wyników. Zwykle jest to wynikiem denormalizacji (normalizacji odwrotnej) i obejmuje użycie klucza obcego w jednej tabeli do wyszukiwania wartości kolumn przy użyciu klucza podstawowego w innej.
Teraz porównaj powyższe przedstawienie ze związkiem. W związku każdy wiersz w wyniku pochodzi z jednej tabeli LUB drugiej. W związku kolumny nie są łączone w celu utworzenia wyników, wiersze są łączone.
Zarówno sprzężenia, jak i związki mogą być używane do łączenia danych z jednej lub więcej tabel w jeden wynik. Obaj zajmują się tym na różne sposoby. Podczas gdy łączenie służy do łączenia kolumn z różnych tabel, łączenie służy do łączenia wierszy.
To niesamowity wizualny przykład. Byłem całkiem pewien, że zrozumiałem po innych odpowiedziach, ale to całkowicie wyjaśniło.
seadoggie01
Dla przykładu, technicznie rzecz biorąc, czy nie powinno być 10 kolumn dla wyniku?
Bharath Ram
60
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.
Za pomocą JOIN można pobierać dane z dwóch lub więcej tabel w oparciu o logiczne relacje między nimi. Połączenia wskazują, w jaki sposób SQL powinien wykorzystywać dane z jednej tabeli do wybierania wierszy w innej tabeli.
Operacja UNION różni się od używania JOIN, które łączą kolumny z dwóch tabel.
Te obrazy sugerują, że FULL OUTER JOINjest taki sam, jak UNION, które mają różnice
icc97 18.10.17
1
Ta odpowiedź wskazuje, że te obrazy są mylące (którym są IMO), ale nie wyjaśnia dalej, ani nie udziela wyjaśnień w stosunku do pierwotnego pytania.
Josh D.
1
Każdy obraz ze schematami doskonale wyjaśnia sytuację. Nie ma jednego obrazu, który mógłby scalić wszystkie diagramy. To będzie bardziej mylące.
Java Main
41
PRZYSTĄP:
Łączenie służy do wyświetlania kolumn o takich samych lub różnych nazwach z różnych tabel. Wyświetlane dane wyjściowe będą miały wszystkie kolumny pokazane indywidualnie. Oznacza to, że kolumny zostaną wyrównane obok siebie.
UNIA:
Operator zestawu UNION służy do łączenia danych z dwóch tabel zawierających kolumny o tym samym typie danych. Po wykonaniu operacji UNION dane z obu tabel zostaną zebrane w jednej kolumnie o tym samym typie danych.
Teraz dla wykonania 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.
UNION oznacza, że musisz do tabel lub zestawów wyników z taką samą ilością i typem kolumn i dodajesz to do tabel / zestawów wyników razem. Spójrz na ten przykład:
Złączeń i związków można używać do łączenia danych z jednej lub więcej tabel. Różnica polega na sposobie łączenia danych.
Mówiąc prościej, sprzężenia łączą dane w nowe kolumny. Jeśli dwie tabele zostaną połączone, dane z pierwszej tabeli zostaną wyświetlone w jednym zestawie kolumn obok kolumny drugiej tabeli w tym samym wierszu.
Związki łączą dane w nowe wiersze. Jeśli dwie tabele są „zjednoczone” razem, dane z pierwszej tabeli znajdują się w jednym zestawie wierszy, a dane z drugiej tabeli w innym zestawie. Wiersze mają ten sam wynik.
1. Klauzula Złączenia SQL 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 przy użyciu wspólnych dla nich wartości.
2. Operator SQL UNION łączy wynik dwóch lub więcej instrukcji SELECT. Każda instrukcja SELECT w UNION musi mieć taką samą liczbę kolumn. Kolumny muszą również mieć podobne typy danych. Ponadto kolumny w każdej instrukcji SELECT muszą być w tej samej kolejności.
na przykład: klienci z tabeli 1 / zamówienia z tabeli 2
W skrócie są one podobne, ponieważ łączy się dwie tabele lub zestawy wyników, ale UNION naprawdę służy do łączenia zestawów wyników z TĄ SAMĄ LICZBĄ KOLUMN z KOLUMNAMI PODOBNYMI TYPAMI DANYCH. STRUKTURA jest taka sama, dodaje się tylko nowe wiersze.
W złączeniach można łączyć tabele / zestawy wyników z dowolną możliwą strukturą, w tym złączeniem kartezjańskim, w którym NIE ma współdzielonych / podobnych kolumn.
To nasuwa pytanie - złączenie jest wymieniane w kategoriach „dołącz”, a związek jest wymieniany w kategoriach niewyjaśnionych „łączeń”. Jak myślisz, co byś dodał poza innymi wysoko głosowanymi 10-letnimi odpowiedziami, które sprawiają, że jest to „przydatne”? (Retoryczne.) Zobacz tekst kursora myszy nad strzałką do głosowania.
Odpowiedzi:
UNION
umieszcza po sobie wiersze z zapytań, a jednocześnieJOIN
tworzy produkt kartezjański i dzieli go na części - zupełnie inne operacje. Trywialny przykładUNION
:podobny trywialny przykład
JOIN
:źródło
UNION-JOIN
i jak mogę to osiągnąć w standardowym języku SQL? Maria DB ma polecenieunion join
, ale inne bazy danych nie. Dzięki.Połączenia i związki mogą być używane do łączenia danych z jednej lub więcej tabel. Różnica polega na sposobie łączenia danych.
Mówiąc prościej, sprzężenia łączą dane w nowe kolumny . Jeśli dwie tabele zostaną połączone, dane z pierwszej tabeli zostaną wyświetlone w jednym zestawie kolumn obok kolumny drugiej tabeli w tym samym wierszu.
Związki łączą dane w nowe wiersze. Jeśli dwie tabele są „zjednoczone” razem, dane z pierwszej tabeli znajdują się w jednym zestawie wierszy, a dane z drugiej tabeli w innym zestawie. Wiersze mają ten sam wynik.
Oto wizualne przedstawienie złączenia. Kolumny tabeli A i B są łączone w jeden wynik.
Każdy wiersz w wyniku zawiera kolumny z OBA tabeli A i B. Wiersze są tworzone, gdy kolumny z jednej tabeli pasują do kolumn z drugiej. To dopasowanie nazywa się warunkiem dołączenia.
To sprawia, że złączenia są naprawdę świetne do wyszukiwania wartości i włączania ich do wyników. Zwykle jest to wynikiem denormalizacji (normalizacji odwrotnej) i obejmuje użycie klucza obcego w jednej tabeli do wyszukiwania wartości kolumn przy użyciu klucza podstawowego w innej.
Teraz porównaj powyższe przedstawienie ze związkiem. W związku każdy wiersz w wyniku pochodzi z jednej tabeli LUB drugiej. W związku kolumny nie są łączone w celu utworzenia wyników, wiersze są łączone.
Zarówno sprzężenia, jak i związki mogą być używane do łączenia danych z jednej lub więcej tabel w jeden wynik. Obaj zajmują się tym na różne sposoby. Podczas gdy łączenie służy do łączenia kolumn z różnych tabel, łączenie służy do łączenia wierszy.
Źródło
źródło
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.
Za pomocą JOIN można pobierać dane z dwóch lub więcej tabel w oparciu o logiczne relacje między nimi. Połączenia wskazują, w jaki sposób SQL powinien wykorzystywać dane z jednej tabeli do wybierania wierszy w innej tabeli.
Operacja UNION różni się od używania JOIN, które łączą kolumny z dwóch tabel.
Przykład UNII:
Wynik:
DOŁĄCZ Przykład:
Spowoduje to wyświetlenie wszystkich wierszy z obu tabel, dla których warunek
a.Id = b.AFKId
jest spełniony.źródło
Możesz zobaczyć te same schematyczne wyjaśnienia dla obu, ale są one całkowicie mylące.
Dla UNII:
W przypadku DOŁĄCZENIA:
źródło
FULL OUTER JOIN
jest taki sam, jakUNION
, które mają różnicePRZYSTĄP:
Łączenie służy do wyświetlania kolumn o takich samych lub różnych nazwach z różnych tabel. Wyświetlane dane wyjściowe będą miały wszystkie kolumny pokazane indywidualnie. Oznacza to, że kolumny zostaną wyrównane obok siebie.
UNIA:
Operator zestawu UNION służy do łączenia danych z dwóch tabel zawierających kolumny o tym samym typie danych. Po wykonaniu operacji UNION dane z obu tabel zostaną zebrane w jednej kolumnie o tym samym typie danych.
Na przykład:
Zobacz dwie tabele przedstawione poniżej:
Teraz dla wykonania typu JOIN zapytanie jest pokazane poniżej.
To jest połączenie.
UNION oznacza, że musisz do tabel lub zestawów wyników z taką samą ilością i typem kolumn i dodajesz to do tabel / zestawów wyników razem. Spójrz na ten przykład:
źródło
To są zupełnie różne rzeczy.
Dołączyć pozwala odnosić podobne dane w różnych tabelach.
Związek zwraca wyniki dwóch różnych zapytań jako pojedynczy zestaw rekordów.
źródło
Unia sprawia, że dwa zapytania wyglądają jak jedno. Połączenia służą do badania dwóch lub więcej tabel w jednej instrukcji zapytania
źródło
Złączeń i związków można używać do łączenia danych z jednej lub więcej tabel. Różnica polega na sposobie łączenia danych.
Mówiąc prościej, sprzężenia łączą dane w nowe kolumny. Jeśli dwie tabele zostaną połączone, dane z pierwszej tabeli zostaną wyświetlone w jednym zestawie kolumn obok kolumny drugiej tabeli w tym samym wierszu.
Związki łączą dane w nowe wiersze. Jeśli dwie tabele są „zjednoczone” razem, dane z pierwszej tabeli znajdują się w jednym zestawie wierszy, a dane z drugiej tabeli w innym zestawie. Wiersze mają ten sam wynik.
źródło
Pamiętaj, że unia połączy wyniki ( dla pewności SQL Server ) (funkcja czy błąd?)
id, wartość
1,3
id, wartość, id, wartość
1,3,1,3
źródło
UNION
vsUNION ALL
stackoverflow.com/questions/49925/…1. Klauzula Złączenia SQL 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 przy użyciu wspólnych dla nich wartości.
2. Operator SQL UNION łączy wynik dwóch lub więcej instrukcji SELECT. Każda instrukcja SELECT w UNION musi mieć taką samą liczbę kolumn. Kolumny muszą również mieć podobne typy danych. Ponadto kolumny w każdej instrukcji SELECT muszą być w tej samej kolejności.
na przykład: klienci z tabeli 1 / zamówienia z tabeli 2
połączenie wewnętrzne:
WYBIERZ ID, NAZWĘ, KWOTĘ, DATĘ
OD KLIENTÓW
WEWNĘTRZNE ZAMÓWIENIA
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
unia:
WYBIERZ ID, NAZWĘ, KWOTĘ, DATĘ
OD KLIENTÓW
LEWE DOŁĄCZ DO ZAMÓWIENIA
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNIA
WYBIERZ ID, NAZWĘ, KWOTĘ, DATĘ OD KLIENTÓW
PRAWE DOŁĄCZ DO ZAMÓWIENIA
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
źródło
Usinging UNION
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.
Korzystanie z DOŁĄCZENIA
DOŁĄCZ, możesz pobierać dane z dwóch lub więcej tabel w oparciu o logiczne relacje między nimi.
źródło
W skrócie są one podobne, ponieważ łączy się dwie tabele lub zestawy wyników, ale UNION naprawdę służy do łączenia zestawów wyników z TĄ SAMĄ LICZBĄ KOLUMN z KOLUMNAMI PODOBNYMI TYPAMI DANYCH. STRUKTURA jest taka sama, dodaje się tylko nowe wiersze.
W złączeniach można łączyć tabele / zestawy wyników z dowolną możliwą strukturą, w tym złączeniem kartezjańskim, w którym NIE ma współdzielonych / podobnych kolumn.
źródło
Operator UNION służy do łączenia dwóch lub więcej instrukcji SELECT.
Podczas gdy DOŁĄCZ służy do wybierania wierszy z każdej tabeli, albo za pomocą metody wewnętrznej, zewnętrznej, lewej lub prawej.
Zobacz tutaj i tutaj . Istnieje lepsze wytłumaczenie z przykładami.
źródło
Operacja Unii jest połączona w wyniku pionowego agregatu wierszy, Operacja Unii jest połączona w wyniku poziomego agregatu kolumn.
źródło
Lubię myśleć o ogólnej różnicy jako:
źródło