Suppression efficace des lignes en double dans SQL Server
Imaginez un tableau Employee
contenant une colonne EmployeeName
. L'objectif est de supprimer les lignes en double basées uniquement sur le champ EmployeeName
. Ceci peut être réalisé en utilisant une requête T-SQL concise dans SQL Server.
La solution :
L'exploitation des fonctions de fenêtre offre une solution élégante. La requête suivante attribue un numéro de ligne unique (rn
) à chaque enregistrement de chaque groupe EmployeeName
, classé par empId
. Par la suite, les lignes où rn
est supérieur à 1 (c'est-à-dire les doublons) sont supprimées.
<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>
Pour prévisualiser les lignes dont la suppression est prévue avant d'exécuter l'instruction DELETE
, exécutez cette SELECT
requête :
<code class="language-sql">SELECT * FROM ( SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY EmployeeName ORDER BY empId) FROM Employee ) x WHERE rn > 1;</code>
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!