Supprimer efficacement les lignes en double dans SQL Server tout en préservant une seule ligne
L'intégrité des données est essentielle dans la gestion des bases de données. Cet article aborde le problème courant lié à la suppression des lignes en double d'une table SQL Server tout en garantissant la conservation d'au moins une instance de chaque ensemble de données unique. T-SQL fournit une solution simple utilisant des expressions de table communes (CTE).
La clause OVER
au sein du CTE est la clé de ce processus. Voici un exemple illustratif :
<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>
Cette requête utilise un CTE pour attribuer un numéro de ligne unique (rn
) à chaque ligne au sein des groupes définis par les colonnes [foo]
et [bar]
. La clause ORDER BY [baz]
détermine quelle ligne au sein de chaque groupe est conservée ; vous devez ajuster cela en fonction de vos besoins spécifiques. L'instruction DELETE
supprime ensuite toutes les lignes où rn
est supérieur à 1, ne laissant qu'une seule ligne représentative pour chaque combinaison unique de [foo]
et [bar]
.
Cette approche offre une méthode efficace et fiable pour maintenir la propreté et l'exactitude des données dans votre base de données SQL Server.
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!