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

MySQLの重複行を削除します(主キーを無視します)

    次の例では、主キーまたは一意の識別子の列を無視して、MySQLの重複行を削除します。

    この例では、重複する行を削除しますが、1つは保持します。したがって、2つの同一の行の場合、一方を削除し、もう一方を保持します。

    サンプルデータ

    次のデータを含むテーブルがあるとします。

    SELECT * FROM Dogs;

    結果:

    +---------+-------------+------------+
    | DogId   | FirstName   | LastName   |
    |---------+-------------+------------|
    | 1       | Bark        | Smith      |
    | 2       | Bark        | Smith      |
    | 3       | Woof        | Jones      |
    | 4       | Ruff        | Robinson   |
    | 5       | Wag         | Johnson    |
    | 6       | Wag         | Johnson    |
    | 7       | Wag         | Johnson    |
    +---------+-------------+------------+

    最初の2行が重複しており、最後の3行が重複していることがわかります。

    重複を見つける

    まず、テーブルをチェックして、重複している行の数を確認しましょう。

    SELECT 
        FirstName, 
        LastName, 
        COUNT(*) AS Count
    FROM Dogs
    GROUP BY FirstName, LastName
    HAVING COUNT(*) > 1;

    結果:

    +-----------+----------+-------+
    | FirstName | LastName | Count |
    +-----------+----------+-------+
    | Bark      | Smith    |     2 |
    | Wag       | Johnson  |     3 |
    +-----------+----------+-------+

    Bark Smithには2行、WagJohnsonには3行あることがわかります。

    テーブルの重複を解除して、それぞれが1つだけ含まれるようにします。

    重複を削除

    次のコードを実行すると、上記のテーブルの重複が解除されます。

    DELETE d1 FROM Dogs d1
    INNER JOIN Dogs d2
    WHERE
        d1.DogId < d2.DogId AND
        d1.FirstName = d2.FirstName AND
        d1.LastName = d2.LastName;

    結果:

    Query OK, 3 rows affected (0.00 sec)

    結果を見てみましょう:

    SELECT * FROM Dogs;

    結果:

    +-------+-----------+----------+
    | DogId | FirstName | LastName |
    +-------+-----------+----------+
    |     2 | Bark      | Smith    |
    |     3 | Woof      | Jones    |
    |     4 | Ruff      | Robinson |
    |     7 | Wag       | Johnson  |
    +-------+-----------+----------+

    テーブルから重複する行を正常に削除しました。


    1. nativeQueryを使用したSpringBootQueryアノテーションがPostgresqlで機能しない

    2. MySQL GaleraCluster4.0の新機能

    3. MySQLとMariaDB

    4. PostgreSQLのバージョンを確認する方法