J'ai une table (grande ~ 1 000 000 lignes) qui contient potentiellement des lignes dupliquées (valeurs NULL possibles).Supprimer les lignes dupliquées # 2
Ce que je veux faire est la suivante:
- Sélectionnez seulement DISTINC lignes.
- Supprimez les lignes avec le champ 'id' en double.
Ayons une table:
id | a | b
1 | 2 | 3
2 | 8 | 7
3 | 9 | 10
2 | 8 | 7
3 | 20| 12
Ce que je veux est:
id | a | b
1 | 2 | 3
2 | 8 | 7
Row avec id 2 est conservé dans une copie, alors que les lignes avec id 3 ont été enlevés.
Je pensais:
SELECT DISTINCT id, a, b FROM table
; pour obtenir seulement des lignes distinctes.- En quelque sorte, filtrez le résultat de (1) pour supprimer les ID en double.
Quelle serait la meilleure façon d'aborder cela?
Je suis curieux de savoir ce que vous avez trouvé lorsque vous avez entré 'sql remove duplicate rows' dans le champ de recherche SO. Avez-vous eu les quarante pages de résultats que j'ai faites? :-) Désolé, ne pouvait pas résister à la jab: voir http://stackoverflow.com/search?q=sql+remove+duplicate+rows – paxdiablo
La ligne 2 est répétée deux fois et il est listé ci-dessous, mais la ligne 1 n'est pas répétée deux fois et il est également listé ci-dessous. C'est un peu confus, je suppose que vous vouliez avoir seulement la rangée 1 ci-dessous, ou peut-être la rangée 1 et la rangée 3? – Neil
@Neil, je pense que «2» a survécu parce que le contenu était identique.'3' a été jeté parce que les deux enregistrements étaient différents (en d'autres termes, garder une copie d'un identifiant si toutes les copies sont identiques, sinon jeter), ce qui rend probablement mon commentaire smarmy dessus inexact car cela semble être assez spécial affaire :-) Toutes mes excuses à Petr si c'est le cas. – paxdiablo