Bonjour, comment faire pour supprimer des doublons dans une table sql serveur 2005, faut il faire un programme ou bien existe t il une solution par le language sql ?
merci
Bonjour, comment faire pour supprimer des doublons dans une table sql serveur 2005, faut il faire un programme ou bien existe t il une solution par le language sql ?
merci
pour les supprimer dans une requete select, il faut utiliser distinct:
pour les effacer de la table, il faut reperer un identifiant ou utiliser l'oid (sous postgre par exemple)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select distinct * from table;
Vous pouvez peut être vous inspirer de cette méthode valable pour Oracle http://oracle.developpez.com/faq/?page=3-1#doublons sachant que le ROWID est un identifiant interne unique pour chaque ligne d'une table.
Il n'y a malheuresement pas d'identificateur de Row unique sous SQL Server, en tout cas pas à l'époque de ce documentEnvoyé par Magnus
Pour identifier quelle sont les lignes en doublon il suffit de faire une requete du type :
avec COLONNE_1, COLONNE_N ta clé primaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT COLONNE_1, COLONNE_N,count(*) FROM TABLE1 HAVING COUNT(*)>1;
Cette requete va te donner toutes les lignes qui sont en double.
impossible de faire une key primaire avec
c'est justement dans le couple COLONNE_1, COLONNE_N qu'il y a des doublons, SQL Serveur refuse de créer la clef vu qu'il y a des doublons
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2SELECT COLONNE_1, COLONNE_N
![]()
Quand je disais ta clé primaire, je parlais evidemment de celle que tu ne peux pas faire a cause des doublons !Envoyé par nutix2003
Pas besoin que la clé soit effective, juste que la liste des colonnes de la requete correponde à la liste des colonnes de la clé "voulue".
Mais le mieux c'est de prendre le lien fourni par Magnus !
SQLPro propose une technique de suppression de doublons dans cet article qui convient pour SQL Server.Envoyé par Gaël Donat
En plus, ses techniques sont conformes vis-à-vis de la norme SQL.
je ne sais pas comment passer l'ordre sql cité dans l'exemple
le T1 ne plait pas à sql serveur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 DELETE FROM T_DOUBLON T1 WHERE EXISTS (SELECT * FROM T_DOUBLON T2 WHERE T1.NUM = T2.NUM![]()
Partager