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

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

    はい、一意のIDフィールドがあると仮定すると、IDを除いて同じであるが、値のグループの「最小ID」を持たないすべてのレコードを削除できます。

    クエリの例:

    DELETE FROM Table
    WHERE ID NOT IN
    (
    SELECT MIN(ID)
    FROM Table
    GROUP BY Field1, Field2, Field3, ...
    )
    

    注:

    • 代表的な名前として「テーブル」と「ID」を自由に選択しました
    • フィールドのリスト(「Field1、Field2、...」)には、IDを除くすべてのフィールドを含める必要があります
    • フィールドと行の数によっては、これは遅いクエリになる可能性がありますが、他の方法と比較すると問題ないと思います

    編集:一意のインデックスがない場合は、自動増分の一意のインデックスを追加することをお勧めします。主に優れたデザインであるだけでなく、上記のクエリを実行できるようになるためです。



    1. 一定時間後にMySQLレコードを削除する方法

    2. オンライン調査のためのデータベースモデル。パート1

    3. ソケット'/var/mysql/mysql.sock'(38)を介してローカルMySQLサーバーに接続できません

    4. SQLまたはMySQLでJOINキーワードを使用しない結合に何か問題がありますか?