Если сравниваются строки с целью определения различных значений, два значения 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;
Читайте также: II. Критерии для назначения повышенной стипендии Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|