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
Libérer: 2025-01-03 13:03:43
original
996 Les gens l'ont consulté

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
Copier après la connexion
  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
Copier après la connexion
  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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal