Сталкивался ли с Anti JOIN в PostgreSQL

Python Junior Без компании
Сталкивался ли с Anti JOIN в PostgreSQL
Ответы
Да, Anti JOIN (или Anti Semi JOIN) — это техника для нахождения записей в одной таблице, которых нет в другой. В PostgreSQL это реализуется через `LEFT JOIN` с проверкой на NULL или через `NOT EXISTS`. Пример с `LEFT JOIN`: ``` SELECT a.* FROM table_a a LEFT JOIN table_b b ON a.id = b.a_id WHERE b.a_id IS NULL; ``` Пример с `NOT EXISTS` (часто более эффективен): ``` SELECT a.* FROM table_a a WHERE NOT EXISTS ( SELECT 1 FROM table_b b WHERE b.a_id = a.id ); ``` Ключевые моменты: - `LEFT JOIN` + NULL проверка может быть менее эффективна на больших таблицах - `NOT EXISTS` обычно оптимизируется лучше - В PostgreSQL также есть `EXCEPT`, но он работает иначе (сравнивает полные наборы строк)