Bonjour, j'ai un nom de table amisData strong> contenant des enregistrements en double comme indiqué ci-dessous indiqué ci-dessous Je souhaite supprimer des lignes de combinaisons en double en utilisant MS SQL? P > Comment puis-je supprimer toutes les combinaisons en double de la table SQL? P> P>
Supprimer les derniers enregistrements en double de MS SQL Friendata Table.
Ici, j'ai attaché une image qui met en évidence les combinaisons de colonnes en double. p>
5 Réponses :
Essayez ceci voir ici p> ou ici est plus façons de faire ce que vous voulez p> espérons que cela aide p> p>
@Abhishek: Cela laisse la duplication la plus récente, non "Supprimer le dernier duplicata" que vous avez énoncé dans la question.
Ok @omg j'ai eu ton point. Si je change max () remplacé par min () dans la requête ci-dessus, il supprima les derniers enregistrements en double de la table SQL. Ai-je raison?
Bonjour @arsenmkrt, j'ai remplacé avec Max () à Min () dans votre requête, puis il supprime tous les derniers enregistrements en double. Ai-je raison?
Essayez avec rejoindre aussi :), vous pouvez essayer ma réponse, peu importe vous avez marqué cette réponse :) Cela peut être plus rapide !!
Je sais que c'est vieux mais pour le dossier, vous devez modifier le SQL pour travailler dans MySQL, car l'erreur 1093 (code d'erreur: 1093. Vous ne pouvez pas spécifier la table cible 'xxx' pour la mise à jour de la clause) The Final SQL devrait être comme: Supprimer des amisData où Fid pas dans (Sélectionnez FID de (Sélectionnez Min (FID) en tant que FID auprès des amisData Groupe par userid, amis) comme quelque chose) code>
Je ne sais pas si la syntaxe est correcte pour MS-SQL, mais dans MySQL, la requête ressemblerait à: dans le groupe par code> Clause Vous avez mis les colonnes que vous devez être identiques afin de prendre en compte deux enregistrements en double p> p>
FID n'est pas contenu dans une fonction d'agrégation ou un groupe par clause. L'énoncé SQL ci-dessus sera-t-il fonctionné comme ça?
Essayez cette requête,
select * from FriendsData f1, FriendsData f2 Where f1.fID=f2.fID and f1.UserID =f2.UserID and f1.FriendsID =f2.FriendsID
Mais cela ne supprimera-t-il pas tous i> des rangées de l'ensemble dupliqué? Je pense que l'exigence est de laisser un derrière.
Cela semble contre-intuitif, mais vous pouvez supprimer d'une expression de table commune (dans certaines circonstances). Donc, je le ferais comme si: Cela gardera l'enregistrement avec le plus bas FID. Si vous voulez autre chose, changez la clause de la commande dans la clause Over. P> Si c'est une option, mettez une contrainte d'unicité sur la table afin que vous ne puissiez pas continuer à le faire. Cela n'aide pas à sauter un bateau si vous avez toujours une fuite! P> p>
Merci pour une bonne réponse 1 "Ai-je raison?
Ah oui ... j'ai raté la clause de la CTE. Désolé; post original édité.
fonctionne dans Postgres:
Salut et merci pour la réponse. C'est génial que cela fonctionne pour vous, mais cela nous aiderait si vous pouviez expliquer ce que vous avez fait et comment avez-vous résolu le problème initial!