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

PostgreSQL UNION Operator

PostgreSQL UNION 操作符合并两个或多个 SELECT 语句的结果。

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

Sintassi

UNIONS 基础语法如下:

SELECT colonna1[, colonna2]
FROM tabella1[, tabella2]
[WHERE condizione]
UNION
SELECT colonna1[, colonna2]
FROM tabella1[, tabella2]
[WHERE condizione]

Le espressioni condizionali possono essere configurate con qualsiasi espressione secondo le tue esigenze.

Esempio online

创建 COMPANY 表(下载 COMPANY SQL 文件 ),数据内容如下:

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 righe)

创建 DEPARTMENT 表(下载 DEPARTMENT SQL 文件 ),数据内容如下:

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 righe)

Ora, uniamo le due tabelle utilizzando la clausola UNION nella SELECT statement, come segue:

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;

Ecco i risultati ottenuti:

 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 righe)

Clausola UNION ALL

L'operatore UNION ALL può connettere due SELECT statement con righe ripetute, di solito l'operatore UNION seleziona valori diversi. Se si desidera consentire valori ripetuti, utilizzare UNION ALL.

Sintassi

La sintassi della clausola UNION ALL è la seguente:

SELECT colonna1[, colonna2]
FROM tabella1[, tabella2]
[WHERE condizione]
UNION ALL
SELECT colonna1[, colonna2]
FROM tabella1[, tabella2]
[WHERE condizione]

Le espressioni condizionali possono essere configurate con qualsiasi espressione secondo le tue esigenze.

Esempio online

Ora, uniamo le due tabelle menzionate sopra utilizzando l'espressione SELECT e la clausola 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;

Ecco i risultati ottenuti:

 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 righe)