sql >> Database >  >> RDS >> PostgreSQL

Hoe UNION werkt in PostgreSQL

In PostgreSQL is de UNION operator combineert de resultaten van meerdere zoekopdrachten in een enkele resultaatset.

Syntaxis

De officiële syntaxis gaat als volgt:

query1 UNION [ALL] query2

De UNION operator voegt het resultaat van query2 . toe naar het resultaat van query1 (hoewel er geen garantie is dat dit de volgorde is waarin de rijen daadwerkelijk worden geretourneerd).

Dubbele rijen worden verwijderd tenzij UNION ALL wordt gebruikt.

Voorbeeld

Stel dat we de volgende tabellen hebben:

SELECT * FROM Teachers;
SELECT * FROM Students;

Resultaat:

 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

We kunnen de UNION . gebruiken operator om alle docenten en studenten terug te sturen:

SELECT TeacherName FROM Teachers
UNION
SELECT StudentName FROM Students;

Resultaat:

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

Standaard is de UNION operator past impliciet een DISTINCT toe operatie. Met andere woorden, het retourneert standaard alleen afzonderlijke waarden. Dus de bovenstaande resultaten bevatten slechts één van Warren, Cathy en Bill. Dit ondanks het feit dat de gecombineerde tabellen eigenlijk twee Warrens, twee Cathys en drie Bills bevatten (er zijn twee docenten genaamd Cathy, een docent en een klant genaamd Warren, en twee genaamd Bill, evenals een student genaamd Bill).

Hier is een voorbeeld dat expliciet de DISTINCT . gebruikt operator:

SELECT TeacherName FROM Teachers
UNION DISTINCT
SELECT StudentName FROM Students;

Resultaat:

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

Zelfde resultaat.

Duplicaten opnemen

We kunnen de ALL . gebruiken zoekwoord om dubbele waarden in de resultaten op te nemen:

SELECT TeacherName FROM Teachers
UNION ALL
SELECT StudentName FROM Students;

Resultaat:

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

Deze keer kregen we twaalf rijen in plaats van de acht die we in ons eerste voorbeeld kregen.

We kunnen zien dat beide Cathy's zijn geretourneerd en alle drie de rekeningen zijn geretourneerd.


  1. Ontvang de huidige AUTO_INCREMENT-waarde voor elke tabel

  2. Wat is IN Logische operator in SQL Server - SQL Server / TSQL-zelfstudie, deel 122

  3. FOUT:Fout 1005:Kan tabel niet maken (fout:121)

  4. LIMIT trefwoord op MySQL met voorbereide verklaring