Требуемый вам реляционный оператор: antijoin .
В SQL отсутствует явный оператор соединения или тип или ключевое слово JOIN
; То же самое относится и к Access (ACE, Jet, что угодно). Обратите внимание, что действительно реляционный язык В учебном пособии D используется NOT MATCHING
, например, для его оператора соединения.
Разумеется, антисоединение может быть написано с использованием других операторов SQL. Наиболее часто встречающееся использование EXISTS
или IN (subquery)
. В зависимости от данных может быть возможно использовать внешнее соединение с ограничением на ключ из внешней таблицы, проверяющего на ноль.
Лично я предпочитаю использовать EXISTS в SQL для соединения, потому что предложения объединения находятся ближе друг к другу в написанном коде и не приводят к проекции по объединенной таблице. Этот подход использовался в ответе @Mikael Eriksson.