Shannonovo řešení je správná cesta:použijte operátor NOT IN (nebo NOT EXISTS).
Můžete však smazat nebo aktualizovat spojení v Oracle, ale syntaxe není stejná jako u 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
Kromě toho vám Oracle umožní aktualizovat spojení pouze v případě, že neexistuje žádná nejednoznačnost ohledně toho, ke kterému základnímu řádku bude výpis přistupovat. Oracle zejména nebude riskovat aktualizaci nebo smazání (výpis se nezdaří), pokud existuje možnost, že se řádek ve spojení objeví dvakrát. V tomto případě bude odstranění fungovat pouze v případě, že existuje UNIKÁTNÍ omezení pro my_data(id1, id2, id3, id4).