2009-08-27 13 views
1

ich doppelten Datensätze aus zwei verschiedenen Datenbanken zu identifizieren, zu verwalten:Löschen duplizierte Datensätze aus zwei Datenbanken

select * from 
    taskperformance a, [email protected]_prod b 
where 
    a.activityin = b.activityin 
    and a.completiondate = b.completiondate 

Wie kann ich von b duplizierte Datensätze löschen?

Ich habe versucht:

delete [email protected]_prod where exist ( 
select * from 
    taskperformance a, [email protected]_prod b 
where 
    a.activityin = b.activityin 
    and a.completiondate = b.completiondate) 

Aber es löscht mehr als das, was ich brauche.

Antwort

2

Sie sollten nicht erneut Referenz b in der Unterabfrage:

delete [email protected]_prod b 
where exists (
    select * from taskperformance a 
    where a.activityin = b.activityin 
    and a.completiondate = b.completiondate 
) 
+0

Oops Es tut mir leid. Schlechte Bearbeitung Ich habe nicht auf b verwiesen. Es ist ein Tippfehler. Ich dod es wie Sie gepostet und löscht alle Datensätze. .. :(Gott sei Dank habe ich autocommit auf false gesetzt ... (habe ich nicht?: -o) – OscarRyz

+0

Ich glaube du kannst noch Aliase verwenden ... delete t @ db2 alias wo ... –

+0

@Greg Ogle: Konnte Du erweiterst diesen Kommentar ein wenig. Angenommen, ich weiß nicht wovon du sprichst;) – OscarRyz

Verwandte Themen