sql >> Databáze >  >> RDS >> Mysql

Oprava duplicitních záznamů DB (chyba MySQL)

Seznam všech anomálií:

SELECT name, count(*) FROM TableA GROUP BY name HAVING count(*) > 1;

Existuje několik způsobů, jak se vypořádat s odstraňováním dupů a vaše cesta bude do značné míry záviset na počtu vašich dups.

Viz toto Takže otázka na způsoby, jak je odstranit z vašeho stolu.

Zde je řešení, které jsem zde uvedl:

-- Setup for example
create table people (fname varchar(10), lname varchar(10));

insert into people values ('Bob', 'Newhart');
insert into people values ('Bob', 'Newhart');
insert into people values ('Bill', 'Cosby');
insert into people values ('Jim', 'Gaffigan');
insert into people values ('Jim', 'Gaffigan');
insert into people values ('Adam', 'Sandler');

-- Show table with duplicates
select * from people;

-- Create table with one version of each duplicate record
create table dups as 
    select distinct fname, lname, count(*) 
    from people group by fname, lname 
    having count(*) > 1;

-- Delete all matching duplicate records
delete people from people inner join dups 
on people.fname = dups.fname AND 
   people.lname = dups.lname;

-- Insert single record of each dup back into table
insert into people select fname, lname from dups;

-- Show Fixed table
select * from people;


  1. Proveďte analýzu produktu pomocí SQL Server Full-Text Search. Část 1

  2. MySQL:Vrácení více sloupců z in-line poddotazu

  3. Další vylepšení showplanu? Ano prosím!

  4. Odečtěte dny od data v PostgreSQL