Ich habe den folgenden Code, der in MS SQL Server funktioniert gut:mit Left Löschen in Oracle 10g Registriert
delete grp
from grp
left join my_data
on grp.id1 = my_data.id1
and grp.id2 = my_data.id2
and grp.id3 = my_data.id3
and grp.id4 = my_data.id4
where my_data.id1 is NULL
Grundsätzlich möchte ich alle Vorkommen löschen, die in grp
gefunden werden kann, und haben keine Äquivalenz in my_data
. Leider funktioniert es in Oracle 10g nicht. Ich habe versucht, die alte Syntax für Links Join (+) zu verwenden, aber es funktioniert auch nicht. Wie folgt aus:
delete grp
from grp,
my_data
where grp.id1 = my_data.id1 (+)
and grp.id2 = my_data.id2 (+)
and grp.id3 = my_data.id3 (+)
and grp.id4 = my_data.id4 (+)
and my_data.id1 is NULL
A IN
Klausel würde funktioniert, wenn ich nicht mehrere Schlüssel hatte, aber ich sehe nicht, wie ich es mit meinen Daten nutzen könnten. Also, was ist die Alternative?
SQL Server unterstützt Joins in delete und update ist eine nicht standardmäßige Erweiterung von SQL. –
Shannon Severance: MySQL zu –