Maison >base de données >tutoriel mysql >Comment supprimer efficacement les enregistrements en double dans SQL Server à l'aide de T-SQL ?
Suppression des lignes en double dans SQL Server avec T-SQL
Ce guide montre comment supprimer efficacement les lignes en double d'une table SQL Server à l'aide de T-SQL, en se concentrant sur une colonne spécifique. Utilisons la table Employee
avec une colonne EmployeeName
comme exemple. L'objectif est de conserver une seule instance du nom unique de chaque employé.
Une méthode robuste exploite les fonctions de fenêtre. La requête suivante accomplit cela :
<code class="language-sql">DELETE x FROM ( SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY EmployeeName ORDER BY empId) FROM Employee ) x WHERE rn > 1;</code>
Cette requête utilise ROW_NUMBER()
pour attribuer un rang unique à chaque ligne au sein de chaque groupe (partition) de valeurs EmployeeName
identiques. La clause PARTITION BY EmployeeName
regroupe les lignes et ORDER BY empId
détermine l'ordre de classement au sein de chaque groupe (en supposant que empId
est un identifiant unique). rn
représente le rang.
La clause WHERE rn > 1
cible les lignes dont le rang est supérieur à 1 dans chaque groupe, supprimant ainsi tous les doublons à l'exception de la première occurrence (qui a un rang de 1).
Avant d'exécuter l'instruction DELETE
, il est crucial de prévisualiser les lignes qui seront affectées. Remplacez DELETE
par SELECT
pour obtenir ceci :
<code class="language-sql">SELECT * FROM ( SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY EmployeeName ORDER BY empId) FROM Employee ) x WHERE rn > 1;</code>
Cela permet une vérification avant de supprimer définitivement toute donnée.
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!