Suppression d'enregistrements en double sans clé primaire dans SQL
Les enregistrements en double peuvent poser des problèmes d'intégrité des données, entraînant des résultats inexacts et des incohérences de données. Dans les situations où une table ne dispose pas de clé primaire, l'identification et la suppression des enregistrements en double peuvent être plus complexes.
En l'absence de clé primaire, une approche pour éliminer les enregistrements en double consiste à identifier ceux dont les valeurs correspondent dans des champs spécifiques. , comme un identifiant d'employé et un numéro de sécurité sociale. Pour y parvenir, une sous-requête peut être utilisée pour partitionner la table en fonction des critères souhaités et attribuer un numéro séquentiel à chaque enregistrement.
L'instruction DELETE peut ensuite être utilisée pour supprimer les enregistrements avec des valeurs de champ en double en filtrant sur ceux dont le numéro de ligne est supérieur à 1. Cela garantit que seule la première occurrence de chaque ensemble unique de valeurs est conservée.
Considérez le SQL suivant 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
Dans cette requête, la sous-requête calcule le numéro de ligne pour chaque enregistrement, partitionné par les champs EmpId, EmpName et EmpSSN. La clause ORDER BY garantit que le numéro de ligne est attribué de manière séquentielle. L'instruction DELETE supprime ensuite tous les enregistrements dont le numéro de ligne est supérieur à 1, supprimant ainsi les doublons.
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!