Maison >base de données >tutoriel mysql >Comment supprimer les enregistrements en double dans une table SQL sans clé primaire ?

Comment supprimer les enregistrements en double dans une table SQL sans clé primaire ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-03 13:03:431025parcourir

How to Delete Duplicate Records in a SQL Table Without a Primary Key?

Supprimer les enregistrements en double dans une table SQL sans clé primaire

En l'absence de clé primaire, identifier les enregistrements en double dans une base de données peut être difficile . Cependant, l'utilisation d'une combinaison de fonctions de fenêtre et d'opérateurs logiques permet une suppression efficace des doublons.

Dans l'exemple fourni, l'objectif est de supprimer les enregistrements de la table Employee qui ont les mêmes valeurs EmpId et EmpSSN. Pour y parvenir :

  1. Créez une colonne temporaire à l'aide de la fonction ROW_NUMBER() pour attribuer un nombre à chaque enregistrement en fonction du partitionnement par champs EmpId, EmpName et EmpSSN. Cela crée un tableau dans lequel chaque combinaison unique a un nombre unique.
ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
  1. Créez une sous-requête qui filtre le tableau pour inclure uniquement les enregistrements dont le nombre est supérieur à 1, indiquant les enregistrements en double. .
SELECT SUB FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
FROM Employee) SUB
WHERE SUB.cnt > 1
  1. Utilisez l'instruction DELETE pour supprimer les enregistrements en double de la table Employee en fonction des résultats de la sous-requête.
DELETE SUB FROM (SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
FROM Employee) SUB
WHERE SUB.cnt > 1

En suivant ces étapes, les enregistrements en double seront effectivement supprimés de la table Employee, garantissant l'intégrité des données sans nécessiter de clé primaire.

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