Maison >base de données >tutoriel mysql >Comment supprimer les lignes en double d'une table SQL sans clé primaire ?
Suppression des enregistrements en double d'une table SQL sans clé primaire
Dans une table SQL sans clé primaire, l'identification et la suppression des enregistrements en double peuvent être une tâche complexe. Le problème survient lorsque plusieurs lignes partagent les mêmes valeurs dans des colonnes spécifiques, créant ainsi des redondances dans les données. Pour résoudre ce problème, nous allons explorer une requête qui élimine efficacement les lignes en double en fonction d'une combinaison de colonnes.
Considérez le tableau suivant nommé « employé » avec les données fournies :
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');
À supprimez les lignes en double basées sur "EmpId" et "EmpSSN", nous pouvons exploiter les éléments suivants 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
Explication :
L'exécution de cette requête supprimerait efficacement les enregistrements en double de la table "employé" tout en préservant l'ordre d'origine des données. Après exécution, la table ne contiendrait que des lignes uniques basées sur les champs "EmpId" et "EmpSSN".
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!