Оператор EXCEPT в PostgreSQL работает так, что возвращает все строки из первого оператора SELECT, которых нет во втором операторе SELECT. 14
Каждый оператор SELECT определяет набор данных. 1 Оператор EXCEPT извлекает все записи из первого набора данных, а затем удаляет из результатов все записи из второго набора данных. 1
Для вычисления разницы между двумя запросами они должны быть «совместимы», то есть возвращать одинаковое количество столбцов и соответствующие столбцы должны иметь совместимые типы данных. 3
Пример с одним выражением: SELECT category_id FROM products EXCEPT SELECT category_id FROM inventory;
. 14 В этом примере оператор EXCEPT возвращает все значения category_id, которые находятся в таблице products, а не в таблице inventory. 1
Пример с несколькими выражениями: SELECT contact_id, last_name, first_name FROM contacts WHERE last_name = 'Ivanov' EXCEPT SELECT customer_id, last_name, first_name FROM customers WHERE customer_id < 99;
. 1 В этом примере запрос вернёт записи из таблицы contacts с contactid, lastname и firstname, которые не совпадают со значениями customerid, lastname и firstname в таблице customers. 1