2016-06-20 4 views
1

SO habe ich hoch und niedrig gesucht, andere Tipps in diesem Forum zu versuchen, vergeblich.Löschen von Oracle SQL-Tabelle mit 'inneren Join'

versuchen So innere in Oracle SQL Developer (v3.2.20.09)

Tabelle I aus (Tabelle 1, Spalte Name Column1), in dem die Daten löschen möchten, kommen Sie mit löschen entspricht der Spalte 'Column2' in 'Tabelle 2.

Ich weiß, es gibt einige Unterschiede zwischen Oracle/Microsoft SQL versuchte mehrere Abfragen wie unten, mit leichter Variation (Öffnen/Schließen Klammer, Innen beitritt, WHERE EXISTS WHERE (SELECT) TRY.

delete from table2 where 
exists (select column1 from table1); 

delete from table2, 
inner join table1 on table2.column2 = table1.column1; 

Was sind das Problem (e) der Code, den ich schrieb

+0

Betrachten wir ein [ 'MERGE'] (https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm) verwendet wird. Es enthält eine DELETE-Klausel, die Sie verwenden können. –

Antwort

3

die EXISTS Version würde wie folgt aussehen:

delete from table2 
where exists (select * 
       from table1 
       where table1.column1 = table2.column2); 

Alternativ können Sie eine IN Klausel verwenden

delete from table2 
where column2 in (select column1 
        from table1); 
3

Wenn Sie von table1 zu löschen sind versucht, dann ist das der Name der Tabelle, die in der delete Klausel verwendet werden muss, nicht table2.

delete table1 t1 
where exists (select null 
       from table2 t2 
       where t2.column2 = t1.column1) 
Verwandte Themen