2009-08-27 6 views
1

je parviens à identifier les enregistrements en double de deux bases de données différentes:Supprimer des enregistrements dupliqués à partir de deux bases de données

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

Comment puis-je supprimer des enregistrements dupliqués de b?

J'ai essayé:

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

Mais il supprime plus que ce que j'ai besoin.

Répondre

2

Vous ne devriez pas re-référence b dans la sous-requête:

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

Oops Je suis désolé. Mauvais montage Je n'ai pas référencé b. C'est une faute de frappe. Je l'ai déposé comme vous l'avez posté et il supprime tous les enregistrements. .. :(Dieu merci j'ai mis autocommit à faux ... (je n'ai pas?: -o) – OscarRyz

+0

Je crois que vous pouvez toujours utiliser des alias ... supprimer t @ db2 alias où ... –

+0

@Greg Ogle: Pourrait Supposons que je ne sache pas de quoi vous parlez;) – OscarRyz

Questions connexes