Shannons lösning är vägen att gå:använd operatören INTE I (eller INTE FINNS).
Du kan dock ta bort eller uppdatera en join i Oracle, men syntaxen är inte densamma som 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
Dessutom låter Oracle dig bara uppdatera en join om det inte finns någon tvetydighet om vilken basrad som kommer att nås av uttalandet. I synnerhet kommer Oracle inte att riskera en uppdatering eller en radering (uttrycket kommer att misslyckas) om det finns en möjlighet att en rad kan dyka upp två gånger i kopplingen. I det här fallet kommer borttagningen endast att fungera om det finns en UNIK begränsning på my_data(id1, id2, id3, id4).