Rozwiązanie Shannona jest do zrobienia:użyj operatora NOT IN (lub NOT EXISTS).
Możesz jednak usunąć lub zaktualizować sprzężenie w Oracle, ale składnia nie jest taka sama jak w 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
Ponadto Oracle pozwoli Ci zaktualizować sprzężenie tylko wtedy, gdy nie ma niejasności co do tego, do którego wiersza podstawowego będzie dostęp instrukcja. W szczególności Oracle nie ryzykuje aktualizacji lub usunięcia (wyrażenie nie powiedzie się), jeśli istnieje możliwość, że wiersz może pojawić się dwukrotnie w łączeniu. W takim przypadku usuwanie będzie działać tylko wtedy, gdy istnieje ograniczenie UNIQUE na my_data(id1, id2, id3, id4).