Maison >base de données >tutoriel mysql >Comment supprimer efficacement les enregistrements en double dans SQL Server à l'aide de T-SQL ?

Comment supprimer efficacement les enregistrements en double dans SQL Server à l'aide de T-SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-12 11:57:43701parcourir

How to Efficiently Delete Duplicate Records in SQL Server Using 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!

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