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

Оператор для наборов данных EXCEPT советы и хитрости SQL Server

Оператор EXCEPT не поддерживается. Однако в качестве альтернативы вы можете использовать операции NOT IN и NOT EXISTS совместно с коррелированным подзапросом. Следующие запросы являются примерами того, как с помощью операций NOT EXISTS и NOT IN можно реализовать функциональность EXCEPT.

SELECT DISTINCT
a.city
FROM pubs.authors AS a
WHERE NOT EXISTS
(SELECT —
FROM pubs.publishers AS p
WHERE a.city=p.citv)

SELECT DISTINCT
a.city
FROM pubs.authors AS a
WHERE a.city NOT IN
(SELECT
p.city
FROM pubs.publishers AS p
WHERE p.city IS NOT NULL
)

Как правило, NOT EXISTS работает быстрее, чем NOT IN. Кроме того, существует тонкий момент, касающийся пустых значений (NULL), в котором операторы IN и NOT IN отличаются от операторов EXISTS и NOT EXISTS. Чтобы обойти разную обработку пустых значений, просто добавляйте предложение IS NOT NULL к предложению WHERE, как мы сделали в предыдущем примере.

Источник