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)