Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Оператор 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 совместно с коррелированным подзапросом. За примерами обращайтесь к разделу «Оператор для наборов данных ЕХСЕРТ».

Источник