De oplossing van Shannon is de juiste keuze:gebruik de operator NOT IN (of NOT EXISTS).
U kunt wel een join in Oracle verwijderen of bijwerken, maar de synthax is niet hetzelfde als MS SQL Server:
SQL> DELETE FROM (SELECT grp.*
2 FROM grp
3 LEFT JOIN my_data ON grp.id1 = my_data.id1
4 AND grp.id2 = my_data.id2
5 AND grp.id3 = my_data.id3
6 AND grp.id4 = my_data.id4
7 WHERE my_data.id1 IS NULL);
2 rows deleted
Bovendien laat Oracle u alleen een join bijwerken als er geen onduidelijkheid bestaat over welke basisrij door de instructie wordt benaderd. In het bijzonder zal Oracle geen update of een verwijdering riskeren (de verklaring zal mislukken) als de mogelijkheid bestaat dat een rij twee keer voorkomt in de join. In dit geval werkt het verwijderen alleen als er een UNIEKE beperking is op my_data(id1, id2, id3, id4).