INTERSECT SQL Server

В этом учебном пособии вы узнаете, как использовать оператор INTERSECT в SQL Server (Transact-SQL) с синтаксисом и примерами.

Описание

Оператор INTERSECT SQL Server (Transact-SQL) используется для возврата записей, которые являются общими между двумя операторами SELECT или наборами данных. Если запись существует в одном запросе, а не в другом, она будет исключена из результатов INTERSECT. Это пересечение двух операторов SELECT.

Запрос Intersect

intersect

Пояснение: Запрос INTERSECT вернет записи в серой затененной области. Это записи, которые существуют как в SELECT 1, так и в SELECT 2.
Каждый оператор SELECT в SQL Server INTERSECT должен иметь одинаковое количество столбцов в наборах результатов с похожими типами данных.

Синтаксис

Синтаксис оператора NTERSECT в SQL Server (Transact-SQL):

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
INTERSECT
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

Параметры или аргументы

expressions - столбцы или вычисления, которые вы хотите сравнить между двумя операторами SELECT. Они не должны быть одинаковыми полями в каждом из операторов SELECT, но соответствующие столбцы должны быть с похожими типами данных.
tables - таблицы, из которых вы хотите получить записи. Должна быть хотя бы одна таблица, перечисленная в предложении FROM.
WHERE conditions - необязательный. Условия, которые должны быть выполнены для выбранных записей.

Примечание

  • В обоих операторах SELECT должно быть одинаковое количество выражений.
  • Соответствующие столбцы в каждом из операторов SELECT должны иметь похожие типы данных.
  • Оператор INTERSECT возвращает только общие записи между операторами SELECT.

Пример с одним expressions

Рассмотрим пример запроса INTERSECT в SQL Server (Transact-SQL), который возвращает один столбец с тем же типом данных.
Например:

В этом примере INTERSECT, если product_id появился как в таблице products, так и в таблице inventory, он появится в вашем результирующем наборе для этого запроса INTERSECT.

Теперь давайте усложним наш пример, добавив условия WHERE к запросу INTERSECT.

В этом примере к каждому набору данных добавлены предложения WHERE. Первый набор данных был отфильтрован таким образом, что возвращаются только записи из таблицы products, где product_id больше или равно 30. Второй набор данных был отфильтрован таким образом, чтобы возвращались только записи из таблицы inventory, где quantity больше 10.

Пример с несколькими выражениями

Затем давайте рассмотрим пример запроса INTERSECT в SQL Server (Transact-SQL), который возвращает более одного столбца.
Например:

В этом примере INTERSECT запрос вернет пересечение двух операторов SELECT. Поэтому, если в таблице contacts есть записи с именем contact_id, last_name и first_name, которое соответствует значению employee_id, last_name и first_name в таблице employee, запрос INTERSECT вернет эти записи. Если совпадений нет, то INTERSECT не вернет записи.

Пример использования ORDER BY

Наконец, давайте рассмотрим, как использовать предложение ORDER BY в запросе INTERSECT в SQL Server (Transact-SQL).
Например:

Поскольку имена столбцов различаются между двумя операторами SELECT, более выгодно ссылаться на столбцы в предложении ORDER BY по их позиции в наборе результатов. В этом примере мы отсортировали результаты по supplier_name / company_name в порядке возрастания, как обозначено ORDER BY 2.
В поле supplier_name / company_name находятся позиции № 2 в результирующем наборе.