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

一時テーブルを作成せずに重複レコードを削除する

    これがインプレースソリューションです(ただし、ワンライナーではありません)

    最大IDを確認する:

    select max(id) as maxid 
      from shop;
    

    この値を覚えておいてください。 1000に等しいとしましょう;

    オフセットを使用して、一意の値を再挿入します:

    insert into shop (id, tax_id) 
    select distinct id + 1000, tax_id 
      from shop;
    

    古い値を削除する:

    delete from shop
      where id <= 1000;
    

    通常のIDを復元する:

    update shop
      set id = id - 1000;
    

    利益!



    1. MySQLでNOTINの代替

    2. ベスト・プラクティス:OracleCloudの保守および拡張タスク

    3. MySQLに小数を格納する方法は?

    4. アソシエーションのカウントを条件としたRails3クエリ