View Full Version : Löschen per SQL in 2 Tabellen
Hallo,
gibt es eine Möglichkeit, gleiche Sätze in 2 Tabellen gleichzeitig zu löschen?
z.B.
Tabelle 1:
Kunde 1
Kunde 3
Kunde 4
Tabelle 2:
Kunde 1
Kunde 2
Kunde 4
und ich möchte als Ergebnis die Kunden 1 und 4, die in beiden Tabellen vorkommen, aus beiden Tabellen löschen.
Geht das mit einer SQL-Anweisung ohne Zwischentabelle?
Danke
harbir
... gleichzeitig kann man nicht einmal mehrere Sätze in einer Tabelle löschen. Klammern, sprich entweder alles geht oder nix, kann man beliebige Operationen unter Commit.
D*B
Da brauchst du 2 SQL's:
delete from table1 a
where exists (select * from table2 b where a.key=b.key)
delete from table2 a
where not exists (select * from table1 b where a.key=b.key)
@Baldur
sind dann aber mit dem 2. SQL nicht auch die Sätze raus, die es vorher nicht in tabelle 1 gab ?
ich denke es geht sogar nur über 3 SQL.
1.)
Select kunde from table1 a
where exists (select * from table2 b where a.key=b.key)
mit Ausgabe in einer TMPFILE
2.)
delete from table1 a
where exists (select * from TMPFILE b where a.key=b.key)
3.)
delete from table2 a
where exists (select * from TMPFILE b where a.key=b.key)
andreaspr@aon.at
12-03-14, 14:44
Für die zwischen Tabelle verwende eine GLOBAL TEMPORARY TABLE.
Diese wird automatisch in der QTEMP angelegt.
DECLARE GLOBAL TEMPORARY TABLE SESSION.tmp_tab1 like tab1
Mit Drop Table oder sobald der Job endet wird die Tabelle gelöscht.
lg Andreas
Ja, ihr habt Recht:
create [ global temporary ] table as (
select blabla
) with data