sql >> データベース >  >> RDS >> Mysql

DBの重複エントリを修正(MySQLのバグ)

    すべての異常を一覧表示するには:

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

    重複の削除に取り組む方法はいくつかあり、パスは重複の数に大きく依存します。

    これ を参照してください テーブルからそれらを削除する方法について質問してください。

    そこで提供したソリューションは次のとおりです。

    -- 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. OracleのATAN2()関数

    2. 完全に一致するmysql

    3. コマンドが同期していません。現在、このコマンドを実行することはできません

    4. MySQL GROUPBY...同じフィールドに異なる値があります