J'ai une table sql mais, certaines valeurs ajoutées plus d'une fois, j'ai besoin de supprimer l'une d'entre elles. Pouvez-vous me donner une simple requête?Comment supprimer des données en double dans SQL Server?
Répondre
De here. Si vous ne l'avez pas déjà un champ « ID » qui identifie chaque ligne, vous devrez créer un pour que cela fonctionne (vous pouvez toujours déposer la colonne après que vous avez terminé):
DELETE
FROM MyTable
WHERE ID NOT IN
(
SELECT MAX(ID)
FROM MyTable
GROUP BY DuplicateColumn1, DuplicateColumn2, DuplicateColumn2)
En outre, faire une recherche sur ce site pour "supprimer les lignes dupliquées SQL Server" et vous verrez que cette question a déjà été répondu à plusieurs reprises ici.
Un tel lien dans SO: http://stackoverflow.com/questions/18932/sql-how-can-i-remove-duplicate-rows – alextansc
+1 pour être une bonne réponse, commentant le problème d'intégrité référentielle et m'enseignant quelque chose de nouveau tout en une seule fois. –
Utilisation:
Set RowCount 1
Ensuite, exécutez votre suppression sql
Cela supprimera 1 ligne, peu importe s'il y a plusieurs lignes correspondant.
Ensuite, fermez la fenêtre de requête ou utilisez Définissez RowCount 0 pour le réinitialiser.
DECLARE @Duplicates TABLE (AValue VARCHAR(32))
INSERT INTO @Duplicates VALUES ('No Duplicate')
INSERT INTO @Duplicates VALUES ('Duplicate')
INSERT INTO @Duplicates VALUES ('Duplicate')
SELECT ID = IDENTITY(INT, 1, 1), *
INTO #Duplicates
FROM @Duplicates
DELETE FROM #Duplicates
FROM #Duplicates d
INNER JOIN (
SELECT ID = MIN(ID)
FROM #Duplicates
GROUP BY AValue
HAVING COUNT(*) > 1
) id ON id.ID = d.ID
DELETE FROM @Duplicates
INSERT INTO @Duplicates
SELECT AValue FROM #Duplicates
DROP TABLE #Duplicates
SELECT * FROM @Duplicates
- Créer table temporaire avec le même schéma
- INSERT INTO temptable SELECT DISTINCT * FROM oldtable
- SUPPRIMER DE oldtable
- INSERT INTO oldtable SELECT * FROM temptable
- DROP temptable
Et n'oubliez pas:
- Refactoriser vos tables pour ne pas permettre que cela se produise à nouveau
;WITH tempTable AS
(
SELECT ROW_NUMBER() OVER (PARTITION BY Column1 ORDER BY Column2) AS rownumber,*
FROM @Table
)
DELETE FROM tempTable WHERE rownumber > 1
Il est récupéré à partir du lien de l'article mentionné dans l'une des réponses, mais juste pour sauver quelqu'un dans le futur ..
- 1. Comment supprimer plusieurs lignes dans SQL Server
- 2. Comment puis-je supprimer des noeuds en double dans XQuery?
- 3. Comment puis-je trouver des entrées en double et supprimer les plus anciennes en SQL?
- 4. Comment supprimer des nœuds XML en double en utilisant XSLT
- 5. Comment supprimer des éléments en double d'un tableau en Perl?
- 6. Comment supprimer des noeuds en double en utilisant XSLT?
- 7. Supprimer de grandes quantités de données dans SQL Server 2005
- 8. supprimer les lignes en double
- 9. Comment supprimer des éléments en double d'un fichier xml?
- 10. Insérer des données binaires dans SQL Server en utilisant PHP
- 11. Supprimer des packages DTS de SQL Server?
- 12. Sql Server à double sous-requête
- 13. Comment supprimer des fichiers hors connexion d'une base de données SQL Server 2005
- 14. Comment diviser des données dans SQL Server 2005?
- 15. Fusionner, puis supprimer les entrées en double
- 16. Dans Sql Server, comment convertir des chaînes binaires en binaire?
- 17. Comment supprimer linq en sql?
- 18. Comment transférer des données cryptées SQL entre des bases de données SQL Server 2005?
- 19. Comment supprimer une clé étrangère dans SQL Server?
- 20. Comment supprimer un caractère d'une colonne dans SQL Server?
- 21. Suppression de requêtes SQL en double aide
- 22. Refactoring des méthodes suivantes pour supprimer le code en double
- 23. Supprimer des lignes en double à partir du fichier texte?
- 24. Comment puis-je supprimer les lignes en double d'un fichier?
- 25. Comment puis-je savoir quelles tables contiennent des données dans un fichier dans SQL Server?
- 26. Suppression des lignes en double dans Postgres
- 27. Fusionner des bases de données SQL Server
- 28. Comment importer des données de Microsoft Access/SQL Server 2005 dans des données de base?
- 29. Quel type de données SQL Server représente le mieux un double en C#?
- 30. Comment détecter les lignes en double dans une table SQL Server?
Cette _must_ peut être un doublon multiple. –