PostgreSQL Unia, Unia WSZYSTKO z przykładami

⚡ Inteligentne podsumowanie

PostgreSQL UNION łączy wyniki dwóch lub więcej poleceń SELECT w jeden zestaw wyników i usuwa zduplikowane wiersze, podczas gdy UNION ALL zachowuje wszystkie wiersze, zapewniając szybsze rozwiązanie, gdy duplikaty nie mają znaczenia.

  • 🔗 Połączyć: UNION łączy wiersze z wielu poleceń SELECT w jeden zestaw wyników.
  • 🧹 Duplikaty: UNION usuwa powtarzające się wiersze, natomiast UNION ALL zachowuje wszystkie pasujące wiersze.
  • 📐 zasady: Każda instrukcja SELECT musi zwrócić taką samą liczbę kolumn o zgodnych typach danych.
  • ↕️ ZAMÓW PRZEZ: Pojedyncze polecenie ORDER BY na końcu sortuje połączony zestaw wyników.
  • Wydajność: UNION ALL działa szybciej, ponieważ pomija krok usuwania duplikatów.
  • 🤖 Pomoc AI: Asystenci AI wyrównują kolumny i wybierają pomiędzy UNION i UNION ALL.

PostgreSQL UNIA i UNIA WSZYSTKICH

Czym jest PostgreSQL Unia?

PostgreSQL Operator UNION służy do łączenia zestawów wyników z więcej niż jednego polecenia SELECT w jeden zestaw wyników. Wszelkie duplikaty wierszy z wyników poleceń SELECT są eliminowane. Operator UNION działa w dwóch warunkach:

  • Zapytania SELECT muszą zwracać taką samą liczbę kolumn.
  • Typy danych wszystkich odpowiednich kolumn muszą być kompatybilne.

Operatora UNION używa się zazwyczaj do łączenia danych z powiązanych tabel, które nie zostały idealnie znormalizowane.

Składnia

SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)]
UNION
SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)];

Oto wyjaśnienie powyższych parametrów:

Wyrażenie_1, wyrażenie_2,… wyrażenie_n to obliczenia lub kolumny, które należy pobrać.

Tabele to tabele, z których należy pobrać rekordy.

Warunki WHERE to warunki, które muszą zostać spełnione, aby można było pobrać rekordy.

Uwaga: Ponieważ operator UNION nie zwraca duplikatów, użycie UNION DISTINCT nie będzie miało wpływu na wyniki.

PostgreSQL Unia

Operator UNION usuwa duplikaty w taki sam sposób, jak WYBIERZ WYRÓŻNIENIE Tak. Pokażmy to. Mamy bazę danych o nazwie Demo z następującymi tabelami:

Książka:

PostgreSQL Unia

Cena:

PostgreSQL Unia

Uruchommy następujące polecenie:

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

Polecenie zwróci następującą informację:

PostgreSQL Unia

Kolumna id pojawia się zarówno w tabelach Książka, jak i Cena. Jednak w wyniku pojawia się tylko raz. Powód jest taki, że PostgreSQL Operator UNION nie zwraca duplikatów.

PostgreSQL Unia wszystkich

Ten operator łączy zestawy wyników z więcej niż jednego polecenia SELECT bez usuwania duplikatów. Operator wymaga, aby każde polecenie SELECT miało podobną liczbę pól w zestawach wyników podobnych typów danych.

Składnia:

SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)]
UNION ALL
SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)];

Oto wyjaśnienie powyższych parametrów:

Wyrażenie_1, wyrażenie_2,… wyrażenie_n to obliczenia lub kolumny, które należy pobrać.

Tabele to tabele, z których należy pobrać rekordy.

Warunki WHERE to warunki, które muszą zostać spełnione, aby można było pobrać rekordy.

Uwaga: Oba polecenia SELECT muszą zawierać taką samą liczbę wyrażeń.

Będziemy korzystać z następujących tabel:

Książka:

PostgreSQL Unia wszystkich

Cena:

PostgreSQL Unia wszystkich

Uruchom następujące polecenie:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Powinno zostać zwrócone:

PostgreSQL Unia wszystkich

Duplikaty nie zostały usunięte.

ZAMÓW PRZEZ

PostgreSQL Operator UNION może być używany razem z klauzulą ​​ORDER BY, aby uporządkować wyniki zapytania. Aby to zademonstrować, użyjemy następujących tabel:

Cena:

ZAMÓW PRZEZ

Cena2:

ZAMÓW PRZEZ

Oto polecenie, które pokazuje, jak używać operatora UNION razem z klauzulą ​​ORDER BY:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price;

Polecenie zwróci następującą informację:

ZAMÓW PRZEZ

Rekordy uporządkowano według kolumny ceny. Klauzula domyślnie porządkuje rekordy w kolejności rosnącej. Aby uporządkować je w kolejności malejącej, dodaj klauzulę DESC, jak pokazano poniżej:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

Polecenie zwróci następującą informację:

ZAMÓW PRZEZ

Rekordy zostały uporządkowane według kolumny ceny w kolejności malejącej.

Kiedy stosować Union, a kiedy Union All?

Użyj operatora UNION, jeśli masz wiele tabel o podobnej strukturze, ale podzielonych z jakiegoś powodu. Przydaje się, gdy musisz usunąć lub wyeliminować zduplikowane rekordy.

Operatora UNION ALL należy używać, jeśli nie ma potrzeby usuwania lub eliminowania zduplikowanych rekordów.

Korzystanie z pgAdmina

Zobaczmy teraz, jak wykonać wszystkie trzy czynności za pomocą pgAdmin.

Jak korzystać PostgreSQL Unia za pomocą pgAdmin

Poniżej przedstawiono krok po kroku proces korzystania z PostgreSQL UNION przez pgAdmin:

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2) Na pasku nawigacyjnym po lewej stronie kliknij Bazy danych, a następnie kliknij Demo.

Zastosowanie PostgreSQL Unia za pomocą pgAdmin

Krok 3) Wpisz zapytanie w edytorze zapytań:

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

Krok 4) Kliknij przycisk Wykonaj.

Zastosowanie PostgreSQL Unia za pomocą pgAdmin

Powinno zostać zwrócone:

Zastosowanie PostgreSQL Unia za pomocą pgAdmin

Unia wszystkich

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2) Na pasku nawigacyjnym po lewej stronie kliknij Bazy danych, a następnie kliknij Demo.

Zastosowanie PostgreSQL Unia Wszystko za pomocą pgAdmin

Krok 3) Wpisz zapytanie w edytorze zapytań:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

Krok 4) Kliknij przycisk Wykonaj.

Zastosowanie PostgreSQL Unia Wszystko za pomocą pgAdmin

Powinno zostać zwrócone:

Zastosowanie PostgreSQL Unia Wszystko za pomocą pgAdmin

ZAMÓW PRZEZ

Operator UNION ALL można połączyć z klauzulą ​​ORDER BY, aby uporządkować wyniki w zestawie wyników. Na przykład:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price
ORDER BY id;

Polecenie zwróci następującą informację:

Zastosowanie PostgreSQL ZAMÓW PRZEZ PGAdmin

Wyniki zostały zamówione.

Pobierz bazę danych używaną w tym samouczku

FAQ

UNION ALL jest szybszy, ponieważ po prostu łączy wiersze. UNION musi sortować lub haszować połączone wiersze, aby usunąć duplikaty, co powoduje dodatkowe obciążenie. Gdy duplikaty nie mają znaczenia, UNION ALL jest bardziej wydajnym wyborem.

Tak. Każda instrukcja SELECT w UNION musi zwracać tę samą liczbę kolumn, a pasujące kolumny muszą mieć zgodne typy danych w tej samej kolejności. W przeciwnym razie PostgreSQL zgłasza błąd i zapytanie kończy się niepowodzeniem.

Tak. Nazwy kolumn mogą się różnić, ponieważ UNION dopasowuje kolumny według pozycji, a nie nazwy. Typy danych muszą być nadal zgodne, a zestaw wyników używa nazw kolumn z pierwszego polecenia SELECT.

UNION układa wiersze z dwóch zestawów wyników pionowo w jedną listę kolumn, usuwając duplikaty. JOIN łączy kolumny z różnych tabel poziomo na podstawie powiązanego klucza, poszerzając wiersze zamiast je dołączać.

ORDER BY sortuje końcowy wynik łączony, więc PostgreSQL pozwala na użycie tylko jednego polecenia ORDER BY po ostatnim poleceniu SELECT. Sortowanie poszczególnych zapytań w pierwszej kolejności byłoby bezcelowe po połączeniu ich wierszy.

Asystenci AI, tacy jak GitHub Copilot, wyrównują listy kolumn każdej instrukcji SELECT, oznaczają niezgodne typy danych i zalecają UNION lub UNION ALL w zależności od tego, czy duplikaty mają zostać zachowane, redukując w ten sposób częste błędy zapytań.

Tak. Analizując tabele i cel, asystent AI może określić, czy duplikaty wierszy są możliwe i sensowne, a następnie zasugerować UNION ALL, gdy duplikaty są akceptowalne dla przyspieszenia, lub UNION, gdy należy je usunąć.

UNION zwraca wiersze znalezione w obu zapytaniach. INTERSECT zwraca tylko wiersze obecne w obu zapytaniach, a EXCEPT zwraca wiersze z pierwszego zapytania, ale nie z drugiego. Wszystkie trzy funkcje domyślnie usuwają duplikaty.

Podsumuj ten post następująco: