INTERSECT
возвращает записи, найденные в обоих наборах записей
UNION
возвращает записи, найденные в любых наборов записей.
EXCEPT
возвращает записи, найденные в первом наборе записей, но не во втором.
Поскольку и INTERSECT
, и EXCEPT
могут возвращать только записи, найденные в первом наборе записей, их можно переписать с помощью объединений или предикатов IN
/ NOT IN
.
Однако иногда они удобнее, поскольку SQL Server
не поддерживает выражения IN
для нескольких столбцов.
INTERSECT
и EXCEPT
, в отличие от JOIN
и IN
, обрабатывают значения NULL
как совпадающие. Этот запрос:
SELECT NULL
INTERSECT
SELECT NULL
возвращает запись, а вот эту:
SELECT NULL
WHERE NULL IN
(
SELECT NULL
)
ничего не возвращает.