Mam następujący kod, który działa dobrze w MS SQL Server:Usuń z LEFT JOIN w Oracle 10g
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
Zasadniczo, chcę usunąć wszystkie wystąpienia, które można znaleźć w grp
i nie mają żadnego równoważność in my_data
. Niestety, nie działa w Oracle 10g. Próbowałem używać starej składni dla lewego łączenia (+), ale to też nie działa. Tak:
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
IN
Klauzula ta działa, jeśli nie mam wiele kluczy, ale nie rozumiem, jak można go używać z moimi danymi. Czym więc jest alternatywa?
SQL Server wspiera sprzężenia w usuwaniu i aktualizacji to niestandardowe rozszerzenie do SQL. –
Shannon Severance: MySQL too –