PostgreSQL UNION-Operator

Der PostgreSQL UNION-Operator kombiniert die Ergebnisse von zwei oder mehr SELECT-Anweisungen.

Der UNION-Operator wird verwendet, um die Ergebnismengen von zwei oder mehr SELECT-Anweisungen zu kombinieren.

Beachten Sie, dass jede SELECT-Anweisung innerhalb von UNION die gleiche Anzahl an Spalten haben muss. Die Spalten müssen außerdem ähnliche Datentypen haben. Darüber hinaus muss die Reihenfolge der Spalten in jeder SELECT-Anweisung gleich sein.

Syntax

Die grundlegende Syntax von UNION lautet wie folgt:

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

Die Bedingung hier kann je nach Ihren Anforderungen auf einen beliebigen Ausdruck festgelegt werden.

Beispiel

Erstellen Sie die Tabelle COMPANY (COMPANY-SQL-Datei herunterladen), mit folgendem Dateninhalt:

exampledb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

Erstellen Sie die Tabelle DEPARTMENT (Laden Sie die DEPARTMENT-SQL-Datei herunter), mit folgendem Dateninhalt:

exampledb=# SELECT * from DEPARTMENT;
 id | dept        | emp_id
----+-------------+--------
  1 | IT Billing  |      1
  2 | Engineering |      2
  3 | Finance     |      7
  4 | Engineering |      3
  5 | Finance     |      4
  6 | Engineering |      5
  7 | Finance     |      6
(7 rows)

Nun verwenden wir die UNION-Klausel in einer SELECT-Anweisung, um die beiden Tabellen zu verbinden, wie unten gezeigt:

SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
   ON COMPANY.ID = DEPARTMENT.EMP_ID
   UNION
SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
    ON COMPANY.ID = DEPARTMENT.EMP_ID;

Das Ergebnis ist wie folgt:

 emp_id | name  |  dept
--------+-------+--------------
      5 | David | Engineering
      6 | Kim   | Finance
      2 | Allen | Engineering
      3 | Teddy | Engineering
      4 | Mark  | Finance
      1 | Paul  | IT Billing
      7 | James | Finance
(7 rows)

UNION-ALL-Klausel

Der UNION-ALL-Operator kann zwei SELECT-Anweisungen verbinden, die doppelte Zeilen enthalten. Standardmäßig wählt der UNION-Operator eindeutige Werte aus. Wenn doppelte Werte zulässig sind, verwenden Sie UNION ALL.

Syntax

Die grundlegende Syntax der UNION-ALL-Klausel lautet wie folgt:

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION ALL

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

Die Bedingung hier kann je nach Ihren Anforderungen auf einen beliebigen Ausdruck festgelegt werden.

Beispiel

Nun kombinieren wir die beiden oben genannten Tabellen mithilfe einer SELECT-Anweisung mit der UNION-ALL-Klausel:

SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
   ON COMPANY.ID = DEPARTMENT.EMP_ID
   UNION ALL
SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
    ON COMPANY.ID = DEPARTMENT.EMP_ID;

Das Ergebnis ist wie folgt:

 emp_id | name  | dept
--------+-------+--------------
      1 | Paul  | IT Billing
      2 | Allen | Engineering
      7 | James | Finance
      3 | Teddy | Engineering
      4 | Mark  | Finance
      5 | David | Engineering
      6 | Kim   | Finance
      1 | Paul  | IT Billing
      2 | Allen | Engineering
      7 | James | Finance
      3 | Teddy | Engineering
      4 | Mark  | Finance
      5 | David | Engineering
      6 | Kim   | Finance
(14 rows)
Andere Erweiterungen