Ответ
Оператор UNION в SQL используется для объединения результатов двух или более SELECT-запросов в один результирующий набор. Ключевые особенности:
- Объединяет только совместимые наборы данных: Все
SELECT-запросы должны возвращать одинаковое количество столбцов, и соответствующие столбцы должны иметь совместимые типы данных. - Удаляет дубликаты строк: По умолчанию
UNIONвозвращает только уникальные строки из объединенного результата (аналогичноSELECT DISTINCT). UNION ALL: Если нужно сохранить все строки, включая дубликаты, используетсяUNION ALL. Он работает быстрее, так как не выполняет проверку на уникальность.
Синтаксис:
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2
ORDER BY column1; -- Сортировка применяется к конечному результату
Практический пример:
Предположим, есть две таблицы: employees_uk и employees_usa. Нужно получить общий список уникальных email всех сотрудников.
-- Получить уникальные email из двух таблиц
SELECT email FROM employees_uk
UNION
SELECT email FROM employees_usa
ORDER BY email;
-- Получить ВСЕ email, включая повторяющиеся
SELECT email FROM employees_uk
UNION ALL
SELECT email FROM employees_usa;
Важные отличия от JOIN:
JOINсоединяет таблицы по горизонтали (добавляет столбцы), основываясь на условии связи.UNIONобъединяет результаты по вертикали (добавляет строки), требуя одинаковую структуру выборок.
Применение в тестировании:
- Проверка корректности данных после миграции или сравнения данных из разных источников.
- Создание комплексных тестовых наборов данных.