Оператор / оператор PostgreSQL UNION используется для объединения результатов двух или более операторов SELECT без возврата повторяющихся строк.
Чтобы использовать UNION, каждый SELECT должен иметь одинаковое количество выбранных столбцов, одинаковое количество выражений столбцов, один и тот же тип данных и иметь их в одном порядке, но они не обязательно должны быть одинаковой длины.
Синтаксис
Основной синтаксис UNION выглядит следующим образом —
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
Здесь, данное условие может быть любым выражением, основанным на вашем требовании.
пример
Рассмотрим следующие две таблицы: (а) Таблица КОМПАНИИ выглядит следующим образом —
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)
(б) Другая таблица — это ОТДЕЛ следующего содержания:
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)
Теперь давайте объединим эти две таблицы, используя инструкцию SELECT вместе с предложением UNION следующим образом:
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;
Это даст следующий результат —
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)
СОЮЗ ВСЕ Статья
Оператор UNION ALL используется для объединения результатов двух операторов SELECT, включая повторяющиеся строки. Те же правила, которые применяются к UNION, применяются и к оператору UNION ALL.
Синтаксис
Основной синтаксис UNION ALL следующий:
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION ALL SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
Здесь, данное условие может быть любым выражением, основанным на вашем требовании.
пример
Теперь давайте объединим две вышеупомянутые таблицы в нашем операторе SELECT следующим образом:
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;
Это даст следующий результат —