A LEFT JOIN
будет альтернативой, которую вы хотите, только если она основана на равенстве всех соответствующих столбцов обеих таблиц, а не только на равенстве первичного ключа:
SELECT A.*
FROM A LEFT JOIN B
ON A.col1 <=> B.col1 AND A.col2 <=> B.col2 AND .....
WHERE B.primarykeycolumn IS NULL
Я использовал NULL безопасный оператор <=>
, чтобы также проверить равенство значений NULL
. Вы также можете использовать NOT EXISTS
:
SELECT A.* FROM A
WHERE NOT EXISTS (
SELECT 1 FROM B
WHERE A.col1 <=> B.col1 AND A.col2 <=> B.col2 AND .....
)