Maison > Article > base de données > Comment supprimer les données en double dans MySQL ?
Cet article présente principalement les informations pertinentes de MySQL Explication détaillée des instances de données en double. Les amis dans le besoin peuvent se référer à
MySQL Explication détaillée des instances de données en double
Il existe deux sens d'enregistrement en double, l'un est un enregistrement complètement en double, c'est-à-dire que tous les champs sont répétés, et l'autre est un enregistrement avec certains champs répétés. Pour le premier type de duplication, il est relativement facile à résoudre. Utilisez simplement le mot-clé distinct dans l'instruction query pour supprimer la duplication. Presque tous les systèmes de bases de données prennent en charge l'opération distincte. La principale raison de cette duplication est une mauvaise conception de la table, qui peut être évitée en ajoutant une clé primaire ou une colonne index unique à la table.
select distinct * from t;
Pour le deuxième type de problème de doublon, il est généralement nécessaire d'interroger n'importe quel enregistrement parmi les enregistrements en double. Supposons que la table t comporte trois champs : id, name et address. id est la clé primaire et les champs en double sont le nom et l'adresse. Il est nécessaire d'obtenir un ensemble de résultats unique de ces deux champs.
--Oracle, MySQL, utilisent une sous-requête corrélée
select * from t t1 where t1.id = (select min(t2.id) from t t2 where t1.name = t2.name and t1.address = t2.address);
--Hive ne prend en charge que la clause FROM Utilisez la sous-requête , la sous-requête doit avoir un nom et la colonne doit être unique
select t1.* from t t1, (select name, address, min(id) id from t group by name, address) t2 where t1.id = t2.id;
-- Vous pouvez également utiliser l'analyse row_number() de la rucheFonction
select t.id, t.name, t.address from (select id, name, address, row_number() over (distribute by name, address sort by id) as rn from t) t where t.rn=1;
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!