UNION в Oracle SQL: как объединять запросы в один результат без дубликатов

🟢 Введение

Оператор UNION используется для объединения результатов двух (или более) SQL-запросов, возвращающих одинаковое количество столбцов.
Главная особенность: дубликаты удаляются по умолчанию.
Если нужны все строки, включая повторы — используется UNION ALL.


🔤 Написание

Синтаксис:

sql
SELECT столбцы FROM таблица_1
UNION
SELECT столбцы FROM таблица_2;

Условия:

  • Количество и порядок столбцов должны совпадать

  • Типы данных должны быть совместимыми


🔄 Где часто используется

  • Объединение данных из разных таблиц

  • Построение универсальных отчетов

  • Работа с архивами и текущими данными

  • Слияние результатов разных условий

  • Формирование наборов справочников


🧪 10 Примеров использования UNION с пояснениями

1️⃣ UNION без повторов

sql
SELECT department_id FROM employees
UNION
SELECT department_id FROM departments;

Список всех уникальных ID отделов из обеих таблиц.


2️⃣ UNION ALL (с повторами)

sql
SELECT job_id FROM employees
UNION ALL
SELECT job_id FROM job_history;

Объединение всех должностей, включая дубликаты.


3️⃣ UNION с фильтрацией

sql
SELECT first_name FROM employees WHERE department_id = 10
UNION
SELECT first_name FROM employees WHERE salary > 10000;

Сотрудники из отдела 10 + те, у кого высокая зарплата.


4️⃣ UNION с псевдонимами и выравниванием столбцов

sql
SELECT first_name AS name, 'employee' AS source FROM employees
UNION
SELECT customer_name AS name, 'customer' AS source FROM customers;

Объединение сотрудников и клиентов с указанием источника.


5️⃣ UNION в представлении

sql
CREATE OR REPLACE VIEW all_jobs AS
SELECT job_id FROM employees
UNION
SELECT job_id FROM job_history;

Представление с уникальными должностями из текущей и исторической таблиц.


6️⃣ UNION в подзапросе

sql
SELECT * FROM projects
WHERE manager_id IN (
SELECT manager_id FROM current_projects
UNION
SELECT manager_id FROM archived_projects
);

Проекты всех менеджеров, работающих сейчас или ранее.


7️⃣ UNION с ORDER BY (всего один раз, в конце)

sql
SELECT first_name FROM employees WHERE department_id = 10
UNION
SELECT first_name FROM employees WHERE department_id = 20
ORDER BY first_name;

Сортировка применяется только к финальному объединённому результату.


8️⃣ UNION и NULL

sql
SELECT NULL AS region FROM dual
UNION
SELECT region FROM customers;

Добавляем строку с NULL в начало списка регионов.


9️⃣ UNION со строками и числами

sql
SELECT TO_CHAR(salary) FROM employees
UNION
SELECT bonus_amount FROM bonuses;

Объединение числовых значений, приведённых к строке.


🔟 UNION для поиска в нескольких таблицах

sql
SELECT name FROM suppliers
UNION
SELECT name FROM partners
UNION
SELECT name FROM resellers;

Все уникальные бизнес-партнёры.


🧩 Заключение

UNION — мощный способ объединять данные из разных источников, при этом автоматически убирая дубликаты.
Если важна производительность и повторы допустимы — используйте UNION ALL.

💡 Советы:

  • Убедитесь, что столбцы и их типы совпадают

  • Используйте ORDER BY только в конце объединённого запроса

  • Применяйте UNION для интеграции и отчётности


🔜 Следующая статья:

Оператор INTERSECT в Oracle SQL — как найти пересечение результатов двух запросов

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии