Команда UNION ALL
Команда UNION ALL используется для объединения
результатов нескольких запросов SELECT
в один результирующий набор. В отличие от UNION,
она не удаляет повторяющиеся строки,
что делает её быстрее и предсказуемее при необходимости
сохранить все записи.
Синтаксис
SELECT column_list FROM table_name
UNION ALL
SELECT column_list FROM another_table
Таблицы для примеров
| id | name | salary |
|---|---|---|
| 1 | Ivan | 50000 |
| 2 | Olga | 52000 |
| 3 | Sergey | 48000 |
| id | name | salary |
|---|---|---|
| 3 | Sergey | 50000 |
| 4 | Anna | 54000 |
Пример
Давайте объединим списки сотрудников за два года, при этом повторяющиеся строки будут сохранены:
SELECT *
FROM employees_2023
UNION ALL
SELECT *
FROM employees_2024
Результат выполнения кода:
| id | name | salary |
|---|---|---|
| 1 | Ivan | 50000 |
| 2 | Olga | 52000 |
| 3 | Sergey | 48000 |
| 3 | Sergey | 50000 |
| 4 | Anna | 54000 |
Пример
Давайте отсортируем объединённый результат по имени сотрудника:
SELECT *
FROM employees_2023
UNION ALL
SELECT *
FROM employees_2024
ORDER BY name
Результат выполнения кода:
| id | name | salary |
|---|---|---|
| 4 | Anna | 54000 |
| 1 | Ivan | 50000 |
| 2 | Olga | 52000 |
| 3 | Sergey | 48000 |
| 3 | Sergey | 50000 |