ホームページ  >  記事  >  データベース  >  Mysql は重複データを削除し、最小の ID を保持します

Mysql は重複データを削除し、最小の ID を保持します

一个新手
一个新手オリジナル
2017-10-13 10:11:182038ブラウズ

インターネット上で重複したデータを見つけて削除し、最も小さいIDのデータを保持します。方法は次のとおりです:


DELETE
FROM
    people
WHERE
    peopleName IN (
        SELECT
            peopleName
        FROM
            people
        GROUP BY
            peopleName
        HAVING
            count(peopleName) > 1
    )
AND peopleId NOT IN (
    SELECT
        min(peopleId)
    FROM
        people
    GROUP BY
        peopleName
    HAVING
        count(peopleName) > 1
)

自分で使用すると、エラーメッセージが表示されます:


1 delete from tb where id in (SELECT max(id) from tb GROUP BY user HAVING count(user)>1)

[Err] ] 1093 - FROM句で更新対象テーブル「XXX」を指定することはできません

原因はまだ分かりません。

次に、操作を分散する方法を見つけます。最初に重複ユーザーのデータをフィルターで除外し、次に max() を使用して大きい行を選択します:

SELECT max(id) from tb GROUP BY user HAVING count(user)> ; 1

次に、取得したmax(id)に基づいて冗長なデータを1つずつ削除します


1 delete from tb where id=xx

以上がMysql は重複データを削除し、最小の ID を保持しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。