9
votes

Supprimer des lignes dupliquées et des références de mise à jour

Comment supprimer des lignes dupliquées dans une table et mettre à jour des références dans une autre table à la ligne restante? La duplication ne se produit que dans le nom. Les colonnes ID sont des colonnes d'identité.

Exemple: h3>

supposons que nous avons deux tables doubles code> et data ​​code>. P>

Id DoublesId
1  1
2  1 


0 commentaires

4 Réponses :


0
votes

Remarque: j'ai pris la liberté de renommer respectivement votre identifiant d'identifiant et de Daid. Je trouve que l'EssinSier fonctionne avec. XXX


1 commentaires

Je ne comprends pas moi-même, mais cet exemple de code semble fonctionner sur SQL Server 2008.



0
votes

Jetez un coup d'œil à celui-ci, j'ai essayé cela, fonctionnant bien xxx

S'il vous plaît essayez de me le faire savoir si cela vous a aidé

Merci

~ AAMOD


0 commentaires

9
votes

Je n'ai pas couru ceci, mais j'espère que cela devrait être correct et assez proche de la finale Soln pour vous rendre là-bas. Faites-moi savoir des erreurs si vous voulez et je vais mettre à jour la réponse.

--updates the data table to the min ids for each name
update Data
set id = final_id
from
  Data
join
  Doubles 
on Doubles.id = Data.id
join
(
  select 
    name
    min(id) as final_id
  from Doubles
  group by name
) min_ids
on min_ids.name = Doubles.name

--deletes redundant ids from the Doubles table
delete 
from Doubles
where id not in
(
  select 
    min(id) as final_id
  from Doubles
  group by name
)


0 commentaires

0
votes

Si vous utilisez MySQL après avoir travaillé pour moi. Je l'ai fait pour 2 étapes

  • Étape 1 -> Mettez à jour toutes les lignes de données vers une double référence de table (avec ID le plus bas)
  • Étape 2 -> Supprimer tous les doublons avec l'identifiant le plus bas

    étape 1 -> xxx

    étape 2 -> xxx


0 commentaires