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

テーブルから重複する行を削除します

    この実行を複数回試すことができます :

    delete from mytable where id in (
        select max(id)
          from mytable
         group by name
        having count(1) > 1
    );
    

    複数回 nameでの最大繰り返し回数に等しい 列。

    それ以外の場合は、次のより複雑なクエリを試すことができます:

    delete from mytable where id in (
        select id from mytable
        except 
        (
        select min(id)
          from mytable
         group by name
        having count(1) > 1
        union all
        select min(id)
          from mytable
         group by name
        having count(1) = 1
        )
    );
    

    このクエリを1回だけ実行すると、必要なものがすべて削除されます。まだ試していません...



    1. MySQLデータベースからランダムなエントリを選択する

    2. このコードでハッキングできますか?

    3. OptimaDataとVidaXLとの交流会のためにアムステルダムに参加してください

    4. より良いDBaaSを提供するために私たちを刺激してくれたAmazonに感謝します:SkySQL