0
votes

SQL - fusionner des lignes en double par le plus récent

J'ai une base de données Big SQL avec ces tables, par exemple: xxx

La base de données précédente a été construite sans un email unique (oui c'est horrible). Donc, j'ai besoin de fusionner l'utilisateur avec le même courriel, mais des données différentes avec l'enregistrement le plus récent.

puis mettez à jour la base de données en supprimant l'ancien et en conservant la dernière.

excuse moi si ce n'est pas clair ..


2 commentaires

Je recommande de faire une suppression douce au lieu d'une suppression dure si l'espace n'est pas tellement de préoccupation


Peut-être que cela aidera?


3 Réponses :


4
votes

quelque chose comme ça? XXX


2 commentaires

Excusez-moi, je ne suis pas très fort avec SQL, je ne comprends pas le code. t est le nom de nom et t2 ?


t est le nom de la table. T2 est un alias de table.



1
votes

avec existe : xxx

existe retournera vrai dès qu'il trouve 1 rangée avec Le même email et la même date supérieure à la ligne actuelle, il n'a donc pas besoin de numériser toute la table pour chaque rangée.


0 commentaires

0
votes

Vous avez mentionné qu'il s'agit d'une grande base de données. Je suggérerai alors que vous ajoutez un index sur la table avant d'exécuter le script par @forpas ou @gordon Linoff, car ces scripts peuvent prendre beaucoup de temps à compléter lorsqu'ils traitent avec des millions de lignes.

L'index pourrait être créé comme Ceci: xxx

puis, par la suite, si vous n'avez plus besoin de l'index, vous pouvez le laisser tomber comme ceci: xxx


0 commentaires