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

mysql重複データの削除

    各重複の1つのレコードを含むテーブルを作成できます。次に、peopleテーブルからすべてのdupレコードを削除してから、dupレコードを再挿入します。

    -- 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. MySQLで列名を変更する

    2. MySQLは、列を主キーではなくAUTO_INCREMENTを持つUNIQUEとして定義しています

    3. mysql結合テーブルクエリ2の値

    4. 列照合をテーブル/データベースのデフォルトに変換する