How to delete a record using inner join on Oracle SQL?
Only one From table is allowed when performing a Delete.try
DELETE FROM A_B WHERE EXISTS (SELECT 1 FROM A INNER JOIN B ON (B.ID = A_B.B_ID) WHERE A.ID = A_B.A_ID AND B.NAME IN ('X', 'Y') AND A.NAME = 'Z');
reference here
Try:
delete from Awhere A.ID in ( select A_ID from A_B inner join B on B.ID = A_B.B_ID where B.NAME in (...) )and A.NAME = 'Z'
You can try merge
merge into Ausing (select * from A_B inner join B on (B.ID = A_B.B_ID) where B.NAME IN ('X', 'Y')) don (d.A_ID = A.ID)when matched then delete where A.NAME = 'Z';