Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Если сравниваются строки с целью определения различных значений, два значения NULL считаются равными.




 

Операция INTERSECT DISTINCT. Операция над множествами intersect логически сначала удаляет дублирующиеся строки из обоих входных мультимножеств, превращая последние в множества, а затем возвращает только те строки, которые встречаются в обоих множествах (строка возвращается при условии, что она встречается хотя бы один раз в обоих входных мультимножествах).

Например, следующий программный код вернет отличные друг от друга местонахождения, которые определяют местонахождения как сотрудников, так и клиентов:

SELECT country, region, city FROM HR.Employees

INTERSECT

SELECT country, region, city FROM Sales.Customers;

 

Результат:

 

Пример.

Первый запрос возвращает все значения из таблицы Production.Product

USE AdventureWorks;

GO

SELECT ProductID

FROM Production.Product;

--Результат: 504 Строки

 

Следующий запрос возвращает все различные значения, входящие в результаты выполнения, как левого, так и правого запроса оператора. Оператор INTERSECT возвращает все различные значения, входящие в результаты выполнения, как левого, так и правого запроса.

INUSE AdventureWorks;

GO

SELECT ProductID

FROM Production.Product

INTERSECT

SELECT ProductID

FROM Production.WorkOrder;

--Результат: 238 Строки (products that have work orders, продукты имеющие заказы). Возвращает все различные значения, входящие в результаты выполнения запросов, указанных как слева, так и справа от оператора INTERSECT.

 

Следующий запрос возвращает все уникальные значения, возвращенные запросом, указанным слева от операнда EXCEPT, но отсутствующие в результатах выполнения правого запроса.

USE AdventureWorks;

GO

SELECT ProductID

FROM Production.Product

EXCEPT

SELECT ProductID

FROM Production.WorkOrder;

--Результат: 266 Строки (products without work orders, продукты не имеющие заказы)

 

Приоритет. В языке SQL для операций над множествами определен приоритет. У операции INTERSECT более высокий приоритет, чем у операций union и except, а у двух последних приоритет равный. В запросе, содержащем многочисленные операции над множествами, первыми выполняются операции intersect, а затем операции с одинаковым приоритетом в порядке их следования.

 

Пример: Запрос (у INTERSECT более высокий приоритет и выполняется первым) имеет следующий смысл: местонахождения поставщиков, но не совпадающие местонахождения сотрудников и клиентов.

SELECT country, region, city FROM Production.Suppliers

EXCEPT

SELECT country, region, city FROM HR.Employees

INTERSECT

SELECT country, region, city FROM Sales.Customers;

 

Для управления порядком выполнения операций над множествами можно применять скобки.

Пример: Запрос вернет местонахождения поставщиков, не являющиеся местонахождениями сотрудников, но совпадающих с местонахождениями клиентов.

(SELECT country, region, city FROM Production.Suppliers

EXCEPT

SELECT country, region, city FROM HR.Employees)

INTERSECT

SELECT country, region, city FROM Sales.Customers;

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...