Maison >base de données >tutoriel mysql >Comment supprimer les enregistrements en double dans SQL Server à l'aide de ROW_NUMBER() ?
Intégrité des données : suppression des entrées en double dans SQL Server
Le maintien d'une base de données propre et efficace nécessite la suppression régulière des enregistrements en double. Ceci est vital pour l’intégrité des données et les performances optimales de la base de données. Lorsqu'il existe des entrées identiques (par exemple, plusieurs employés portant le même nom), il est essentiel d'éliminer les licenciements.
SQL Server offre une solution puissante utilisant les fonctions de fenêtre et les instructions DELETE. Les fonctions de fenêtre offrent la possibilité d'effectuer des calculs sur des lignes associées.
Pour illustrer, envisageons de supprimer les entrées en double en fonction de la colonne EmployeeName
. La fonction ROW_NUMBER()
attribue un rang unique à chaque ligne d'une partition (groupe de valeurs EmployeeName
identiques). Cela nous permet de supprimer sélectivement les doublons.
Voici la requête T-SQL :
<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 fonctionne comme suit : Une sous-requête crée une table temporaire, appliquant ROW_NUMBER()
partitionnée par EmployeeName
et ordonnée par empId
. Cela attribue un rang unique (RN) à chaque nom d'employé, en numérotant les doublons de manière séquentielle.
L'instruction DELETE
cible ensuite cette table temporaire (alias « x ») et supprime toutes les lignes où RN est supérieur à 1. Cela ne conserve effectivement que la première instance de chaque EmployeeName
, supprimant tous les doublons suivants.
Vérification avant exécution :
Avant d'exécuter l'instruction DELETE
, il est crucial de vérifier son impact. Exécutez cette SELECT
déclaration :
<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 affichera un aperçu des enregistrements dont la suppression est prévue. Une fois que vous avez confirmé l'exactitude, exécutez l'instruction DELETE
pour supprimer définitivement les enregistrements en double de la table Employee
.
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!