Gestion des enregistrements en double dans les tables SQL sans clés primaires
En l'absence de clé primaire, la suppression des enregistrements en double d'une table SQL peut être stimulant. Considérons le scénario suivant :
Une table nommée "employé" contient les enregistrements suivants sans clé primaire :
create table employee ( EmpId number, EmpName varchar2(10), EmpSSN varchar2(11) ); insert into employee values(1, 'Jack', '555-55-5555'); insert into employee values (2, 'Joe', '555-56-5555'); insert into employee values (3, 'Fred', '555-57-5555'); insert into employee values (4, 'Mike', '555-58-5555'); insert into employee values (5, 'Cathy', '555-59-5555'); insert into employee values (6, 'Lisa', '555-70-5555'); insert into employee values (1, 'Jack', '555-55-5555'); insert into employee values (4, 'Mike', '555-58-5555'); insert into employee values (5, 'Cathy', '555-59-5555'); insert into employee values (6 ,'Lisa', '555-70-5555'); insert into employee values (5, 'Cathy', '555-59-5555'); insert into employee values (6, 'Lisa', '555-70-5555');
Étant donné cette table, le but est de supprimer les enregistrements en double tout en préservant des uniques. Pour y parvenir, nous pouvons utiliser une combinaison d'une fonction "ROW_NUMBER()" et d'une instruction "DELETE" :
DELETE SUB FROM (SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt FROM Employee) SUB WHERE SUB.cnt > 1
Décomposer le code :
En exécutant cette requête, les enregistrements en double dans la table « employé » seront supprimés, ne laissant que les enregistrements uniques :
select * from employee; EmpId EmpName EmpSSN 1 Jack 555-55-5555 2 Joe 555-56-5555 3 Fred 555-57-5555 4 Mike 555-58-5555 5 Cathy 555-59-5555 6 Lisa 555-70-5555
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!