Вы можете найти несопоставленные записи, посмотрев значение NULL на одной стороне внешнего соединения, а затем удалите их:
DELETE FROM A
WHERE id IN
(
SELECT A.id
FROM A
LEFT JOIN B
ON A.id = B.id
WHERE B.id IS NULL -- This means we only return unmatched A records
)
Основная причина, по которой мне это нравится, заключается в том, что вы можете заранее выполнить часть SELECT
оператора, чтобы проверить свою работу. В противном случае другие ответы выглядят намного чище.