Что такое UNION, EXCEPT и INTERSECT команды?
UNION, INTERSECT и EXCEPT — это операторы множеств, которые применяются к результатам двух запросов SELECT.
UNION объединяет результаты, INTERSECT возвращает только общие строки, а EXCEPT — строки первого запроса, которых нет во втором; при этом по умолчанию дубликаты убираются.
Во всех случаях оба запроса должны возвращать одинаковое количество столбцов с совместимыми типами данных в одном и том же порядке.
Операторы множеств UNION, INTERSECT и EXCEPT работают поверх результатов двух (или более, если писать их каскадом) запросов SELECT, рассматривая их как множества строк и выполняя над ними операции объединения, пересечения и разности.
Для всех этих операторов действуют одинаковые правила: каждый из объединяемых запросов должен возвращать одинаковое число столбцов в одинаковом порядке, а типы данных в соответствующих столбцах должны быть совместимы или неявно приводимы; финальные имена столбцов берутся из первого SELECT, а общий ORDER BY можно указать только один раз — после всей конструкции с операторами множеств.
UNION по умолчанию удаляет дубликаты (равносилен UNION DISTINCT), поэтому результат содержит только уникальные строки из обоих наборов; вариант UNION ALL просто конкатенирует результаты и сохраняет все повторы, что обычно быстрее на больших объёмах данных.
INTERSECT возвращает только те строки, которые присутствуют сразу в обоих результирующих наборах; по умолчанию он также убирает дубликаты, а вариант INTERSECT ALL, если он поддерживается, учитывает кратность повторений.
EXCEPT (в Oracle аналогом является оператор MINUS) реализует разность множеств: из результата первого запроса вычитаются строки, которые присутствуют во втором; по умолчанию результат содержит уникальные строки, а наличие и поведение варианта EXCEPT ALL зависят от конкретной СУБД.
Отметьте свой прогресс