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

重複するSQLレコードを削除して、一意のキーを許可する

    コメントへの返信として、MySQLで機能するクエリは次のとおりです。

    delete YourTable
    from YourTable
    inner join YourTable yt2
    on YourTable.product_id = yt2.product_id
    and YourTable.id < yt2.id
    

    これにより、重複する行のみが削除されます。 inner join 同じ商品の他の行が存在しない場合でも、各商品の最新の行を除外します。

    P.S. FROMの後にテーブルのエイリアスを作成しようとした場合 、MySQLでは、次のようにデータベースの名前を指定する必要があります。

    delete <DatabaseName>.yt
    from YourTable yt
    inner join YourTable yt2
    on yt.product_id = yt2.product_id
    and yt.id < yt2.id;
    


    1. GROUPBYのわずかなバリエーションを探しています

    2. Oracle:max(id)+1とsequence.nextvalの違い

    3. mysqli_stmt_bind_resultの奇妙な問題

    4. MySQL / PHPエラー:[2002]通常、各ソケットアドレス(プロトコル/ネットワークアドレス/ポート)の使用は1回のみ許可されます