Il arrive quelques fois que l'on soit obliger de détecter ou supprimer desdoublons dans des tables sur un champ particulier. Cela peut devenir une opération très longue et gourmande en ressources.Heureusement on peut utiliser pour améliorer les traitements rdb$db_key.

Ce qui donne :

pour juste les lister :

1
2
3
4
select c0.some_value
 from your_table c0, your_table c1
 wherec0.some_value=c1.some_value
 and c0.rdb$db_key>c1.rdb$db_key

pour les supprimer sans les lister

1
2
3
4
5
6
7
delete from your_table r
 where r.rdb$db_key in
  (select c0.rdb$db_key
    from your_table c0 join your_table c1
      on c0.some_value=c1.some_value
       and c0.rdb$db_key>c1.rdb$db_key
  )

Le champ some_value étant celui où l'on ne veux pas de doublon

Pour plus de renseignements sur rdb$db_key, lisez :  http://www.cvalde.net/document/mysteriousDbKey.htm