PostgreSQL - UNIONS-Klausel

Das PostgreSQL UNION Klausel / Operator wird verwendet, um die Ergebnisse von zwei oder mehr SELECT-Anweisungen zu kombinieren, ohne doppelte Zeilen zurückzugeben.

Um UNION verwenden zu können, muss für jedes SELECT die gleiche Anzahl von Spalten ausgewählt, die gleiche Anzahl von Spaltenausdrücken, der gleiche Datentyp und die gleiche Reihenfolge angegeben werden, sie müssen jedoch nicht dieselbe Länge haben.

Syntax

Die grundlegende Syntax von UNION ist wie folgt -

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

UNION

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

Hier kann eine bestimmte Bedingung ein beliebiger Ausdruck sein, der auf Ihrer Anforderung basiert.

Beispiel

Betrachten Sie die folgenden zwei Tabellen: (a) Die Tabelle COMPANY lautet wie folgt:

testdb=# 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)

(b) Eine andere Tabelle ist ABTEILUNG wie folgt -

testdb=# 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)

Lassen Sie uns nun diese beiden Tabellen mit der SELECT-Anweisung zusammen mit der UNION-Klausel wie folgt verbinden:

testdb=# 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;

Dies würde das folgende Ergebnis erzeugen -

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)

Die UNION ALL-Klausel

Der Operator UNION ALL wird verwendet, um die Ergebnisse von zwei SELECT-Anweisungen einschließlich doppelter Zeilen zu kombinieren. Die gleichen Regeln, die für UNION gelten, gelten auch für den Operator UNION ALL.

Syntax

Die grundlegende Syntax von UNION ALL ist wie folgt -

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

UNION ALL

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

Hier kann eine bestimmte Bedingung ein beliebiger Ausdruck sein, der auf Ihrer Anforderung basiert.

Beispiel

Lassen Sie uns nun die beiden oben genannten Tabellen in unserer SELECT-Anweisung wie folgt verbinden:

testdb=# 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;

Dies würde das folgende Ergebnis erzeugen -

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)