Вы можете использовать NOT EXISTS
:
DELETE dim
FROM TableA dim
WHERE NOT EXISTS (SELECT 1 FROM TableB B WHERE B.ColA = DIM.ColA) OR
NOT EXISTS (SELECT 1 FROM TableC C WHERE C.ColA = DIM.ColA);
В вашем операторе удаления есть два некорректных предложения from
, он должен иметь только один сразу после оператора delete
:
DELETE dim
FROM TableA dim LEFT OUTER JOIN
(SELECT ColA
FROM TableB
UNION
SELECT ColA
FROM tableC
) A
ON A.ColA= dim.ColA
WHERE A.ColA IS NULL;
Кроме того, DISTINCT
с UNION ALL
здесь избыточно, если вы хотите ввести UNIQUE
, тогда используйте UNION
.