Оператор INTERSECT советы и хитрости Oracle
Платформа Oracle поддерживает операторы для работы с наборами INTERSECT и INTERSECT ALL, и при этом используется базовый синтаксис ANSI SQL.
INTERSECT
INTERSECT
Платформа Oracle не поддерживает предложение CORRESPONDING. Предложение INTERSECT DISTINCT не поддерживается, но функциональным эквивалентом является INTERSECT. Платформа Oracle не поддерживает использование INTERSECT в запросах в следующих ситуациях.
- Запросы со столбцами LONG, BLOB, CLOB, BFILE или VARRAY.
- Запросы содержат предложение FOR UPDATE или выражения с использованием коллекций TABLE.
Если первый запрос оператора содержит выражения для отбора элементов, используйте ключевое слово AS, чтобы присвоить псевдоним столбцу, получившемуся в результате выражения. Кроме того, только первый запрос оператора работы с наборами может содержать предложение ORDER BY.
Например, найдем идентификаторы всех магазинов (stores), в которых были продажи (sales).
SELECT
stor_id
FROM stores
INTERSECT
SELECT
stor_id
FROM sales;
Оператор INTERSECT советы и хитрости PostgreSQL
Платформа PostgreSQL поддерживает такие операторы работы с наборами, как INTERSECT и INTERSECT ALL, используя при этом стандартный синтаксис ANSI SQL.
SELECT инструкция
INTERSECT [ALL]
SELECT инструкция
INTERSECT [ALL];
Платформа PostgreSQL не поддерживает операторы INTERSECT или INTERSECT ALL в запросах с предложением FOR UPDATE. Платформа PostgreSQL не поддерживает предложение CORRESPONDING. Инструкция INTERSECT DISTINCT не поддерживается, но INTERSECT является функциональным эквивалентом.
Первый запрос операции с наборами не может содержать предложения ORDER BY или LIMIT. Последующие запросы в операции INTERSECT vim INTERSECT ALL могут содержать эти предложения, но такие запросы следует заключать в скобки. В противном случае крайнее правое предложение ORDER BY или LIMIT будет применяться ко всей операции с наборами. Например, можно найти всех авторов (authors), которые также являются служащими (employee) и чьи фамилии (last name, lname) начинаются с «Р».
SELECT
a.au_lname
FROM authors AS a
WHERE a.au_lname LIKE ‘P%’
INTERSECT
SELECT
e.lname
FROM employee AS e
WHERE e.lname LIKE ‘W%’;
Оператор INTERSECT советы и хитрости SQL Server
Оператор EXCEPT не поддерживается. Однако в качестве альтернативы вы можете использовать операции NOT IN и NOT EXISTS совместно с коррелированным подзапросом. За примерами обращайтесь к разделу «Оператор для наборов данных ЕХСЕРТ».