PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak UNION działa w PostgreSQL

W PostgreSQL UNION operator łączy wyniki z wielu zapytań w jeden zestaw wyników.

Składnia

Oficjalna składnia wygląda następująco:

query1 UNION [ALL] query2

UNION operator dołącza wynik query2 do wyniku query1 (chociaż nie ma gwarancji, że jest to kolejność, w jakiej wiersze są faktycznie zwracane).

Zduplikowane wiersze są eliminowane, chyba że UNION ALL jest używany.

Przykład

Załóżmy, że mamy następujące tabele:

SELECT * FROM Teachers;
SELECT * FROM Students;

Wynik:

 teacherid | teachername 
-----------+-------------
         1 | Warren
         2 | Ben
         3 | Cathy
         4 | Cathy
         5 | Bill
         6 | Bill

 studentid | studentname 
-----------+-------------
         1 | Faye
         2 | Jet
         3 | Spike
         4 | Ein
         5 | Warren
         6 | Bill

Możemy użyć UNION operator, aby zwrócić wszystkich nauczycieli i uczniów:

SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;

Wynik:

 teachername 
-------------
 Spike
 Ben
 Ein
 Cathy
 Jet
 Faye
 Bill
 Warren
(8 rows)

Domyślnie UNION operator domyślnie stosuje DISTINCT operacja. Innymi słowy, domyślnie zwraca tylko różne wartości. Tak więc powyższe wyniki zawierają tylko po jednym z Warrena, Cathy i Billa. Dzieje się tak pomimo faktu, że połączone tabele faktycznie zawierają dwa Warrens, dwie Cathys i trzech Billów (jest dwóch nauczycieli o imieniu Cathy, nauczyciel i klient o imieniu Warren i dwóch o imieniu Bill, a także jeden uczeń o imieniu Bill).

Oto przykład, który jawnie używa DISTINCT operator:

SELECT TeacherName FROM Teachers
UNION DISTINCT
SELECT StudentName FROM Students;

Wynik:

 teachername 
-------------
 Spike
 Ben
 Ein
 Cathy
 Jet
 Faye
 Bill
 Warren
(8 rows)

Ten sam wynik.

Dołącz duplikaty

Możemy użyć ALL słowo kluczowe, aby uwzględnić zduplikowane wartości w wynikach:

SELECT TeacherName FROM Teachers
UNION ALL
SELECT StudentName FROM Students;

Wynik:

 teachername 
-------------
 Warren
 Ben
 Cathy
 Cathy
 Bill
 Bill
 Faye
 Jet
 Spike
 Ein
 Warren
 Bill
(12 rows)

Tym razem otrzymaliśmy dwanaście wierszy zamiast ośmiu, które otrzymaliśmy w naszym pierwszym przykładzie.

Widzimy, że obie Cathys zostały zwrócone i wszystkie trzy rachunki zostały zwrócone.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zainstalować klejnot pg PostgreSQL na Ubuntu?

  2. Wyzwalacz z dynamiczną nazwą pola

  3. psql - zapisz wyniki polecenia do pliku

  4. Usługa bazy danych PostgreSQL

  5. Lumen - Utwórz połączenie z bazą danych w czasie wykonywania