Ответ
UNION — это оператор SQL, который объединяет результаты двух или более SELECT-запросов в один результирующий набор.
Основные правила и особенности:
- Количество и тип столбцов: Все
SELECTв объединении должны иметь одинаковое количество столбцов, и соответствующие столбцы должны иметь совместимые типы данных. - Устранение дубликатов: По умолчанию
UNIONудаляет повторяющиеся строки из конечного результата. Для сохранения всех строк, включая дубликаты, используетсяUNION ALL. - Порядок и имена столбцов: Имена столбцов в результирующем наборе берутся из первого
SELECT. Порядок строк определяется порядком выполнения запросов и последующей сортировкой (если не используетсяORDER BY).
Синтаксис:
SELECT column1, column2 FROM table1
UNION -- или UNION ALL
SELECT column1, column2 FROM table2
ORDER BY column1; -- ORDER BY применяется ко всему объединенному результату
Пример:
-- Найти всех поставщиков и клиентов из города 'London'
SELECT 'Supplier' AS Type, company_name, city FROM suppliers WHERE city = 'London'
UNION
SELECT 'Customer', company_name, city FROM customers WHERE city = 'London'
ORDER BY company_name;
Сравнение UNION и UNION ALL:
UNION: Выполняет дополнительную операцию сортировки/хеширования для удаления дубликатов. Медленнее, но гарантирует уникальность.UNION ALL: Просто склеивает результаты. Быстрее. Используйте его, если дубликаты невозможны или не критичны.