Maison >base de données >tutoriel mysql >Comment puis-je supprimer les lignes en double dans T-SQL tout en conservant une instance ?

Comment puis-je supprimer les lignes en double dans T-SQL tout en conservant une instance ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-15 16:09:44192parcourir

How Can I Delete Duplicate Rows in T-SQL While Keeping One Instance?

T-SQL : effacez les lignes redondantes tout en conservant les enregistrements à une seule ligne

Le maintien de l'intégrité des données est essentiel, et l'élimination des lignes en double est une étape cruciale. Dans ce cas, des enregistrements en double se sont produits en raison d'une erreur de saisie de données. Votre objectif est d'éliminer ces lignes redondantes, mais vous devez être précis et vous assurer de conserver un seul doublon.

Solution : utilisez CTE et ROW_NUMBER()

Dans SQL 2005 ou version ultérieure, vous pouvez utiliser une expression de table commune (CTE) avec la clause ROW_NUMBER() OVER pour atteindre vos objectifs. Le CTE agit comme un filtre, isolant les données pertinentes, tandis que la fonction ROW_NUMBER() attribue un numéro de séquence à chaque ligne d'un groupe de partitions prédéfini (dans ce cas, la colonne clé).

Cette technique vous permet d'isoler les lignes en double en fonction des critères souhaités. En ajoutant une clause WHERE contenant une condition vérifiant si le numéro de ligne est supérieur à 1, vous pouvez identifier et supprimer les lignes redondantes.

Réussite

<code class="language-sql">WITH cte AS (
SELECT [foo], [bar],
row_number() OVER(PARTITION BY [foo], [bar] ORDER BY [baz]) AS [rn]
FROM [TABLE]
)
DELETE FROM cte WHERE [rn] > 1</code>

Options de personnalisation

La clause ORDER BY du CTE offre une flexibilité dans le tri des lignes. Si votre objectif est de conserver les lignes les plus récentes, classez les résultats par ordre décroissant selon la colonne datetime appropriée (par exemple, ORDER BY [baz] DESC). Gardez à l'esprit que la sélection des critères de tri est entièrement personnalisable selon vos besoins spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn