English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Opérateur UNION PostgreSQL

L'opérateur UNION de PostgreSQL fusionne les résultats de deux ou plusieurs SELECT.

L'opérateur UNION est utilisé pour fusionner les résultats de deux ou plusieurs SELECT.

Veuillez noter que chaque SELECT à l'intérieur de UNION doit avoir un nombre de colonnes identique. Les colonnes doivent également avoir des types de données similaires. De plus, l'ordre des colonnes dans chaque SELECT doit être le même.

Syntaxe

La syntaxe de base des UNION est la suivante :

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

Les conditions peuvent être définies comme vous le souhaitez.

Exemple en ligne

Créer la table COMPANY (Télécharger le fichier SQL de la COMPANY ),contenu des données suivant :

w3codeboxdb# 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éer la table DEPARTMENT (Télécharger le fichier SQL DEPARTMENT ),contenu des données suivant :

w3codeboxdb=# 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, nous utilisons la clause UNION dans une requête SELECT pour joindre deux tables, comme suit :

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;

Résultat obtenu comme suit :

 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 requêtes SELECT avec des lignes répétées, généralement, l'opérateur UNION sélectionne des valeurs différentes. Si vous autorisez des valeurs répétées, utilisez UNION ALL.

Syntaxe

La syntaxe 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]

Les conditions peuvent être définies comme vous le souhaitez.

Exemple en ligne

Maintenant, laissons-nous combiner les deux tables mentionnées précédemment en utilisant une requête 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;

Résultat obtenu comme suit :

 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)