Opérateur UNION PostgreSQL
L'opérateur UNION de PostgreSQL combine les résultats de deux ou plusieurs instructions SELECT.
L'opérateur UNION est utilisé pour combiner les ensembles de résultats de deux ou plusieurs instructions SELECT.
Notez que chaque instruction SELECT au sein de UNION doit avoir le même nombre de colonnes. Les colonnes doivent également avoir des types de données similaires. De plus, l'ordre des colonnes dans chaque instruction SELECT doit être le même.
Syntaxe
La syntaxe de base de UNION est la suivante :
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
La condition ici peut être définie sur n'importe quelle expression selon vos besoins.
Exemple
Créez la table COMPANY (Téléchargez le fichier SQL COMPANY), avec le contenu des données comme suit :
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)
Créez la table DEPARTMENT (Télécharger le fichier SQL DEPARTMENT), avec le contenu des données comme suit :
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)
Maintenant, utilisons la clause UNION dans une instruction SELECT pour joindre les deux tables, comme indiqué ci-dessous :
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;
Le résultat est le suivant :
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)
Clause UNION ALL
L'opérateur UNION ALL peut joindre deux instructions SELECT qui contiennent des lignes en double. Par défaut, l'opérateur UNION sélectionne des valeurs distinctes. Si les valeurs en double sont autorisées, utilisez UNION ALL.
Syntaxe
La syntaxe de base de la clause UNION ALL est la suivante :
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION ALL SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
La condition ici peut être définie sur n'importe quelle expression selon vos besoins.
Exemple
Maintenant, combinons les deux tables mentionnées ci-dessus à l'aide d'une instruction SELECT avec la clause UNION ALL :
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;
Le résultat est le suivant :
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)
Autres extensions