Предполагая, что вы избегаете нулей, все они представляют собой способ anti-join с использованием стандартного SQL.
Очевидным упущением является эквивалент использования EXCEPT
:
SELECT a FROM table1
EXCEPT
SELECT a FROM table2
Обратите внимание, что в Oracle вам нужно использовать оператор MINUS
(возможно, лучше):
SELECT a FROM table1
MINUS
SELECT a FROM table2
Говоря о проприетарном синтаксисе, могут быть и нестандартные эквиваленты, которые стоит изучить в зависимости от используемого вами продукта, например OUTER APPLY
в SQL Server (что-то вроде):
SELECT t1.a
FROM table1 t1
OUTER APPLY
(
SELECT t2.a
FROM table2 t2
WHERE t2.a = t1.a
) AS dt1
WHERE dt1.a IS NULL;