ホームページ > データベース > mysql チュートリアル > MySQL で重複行を保持したまま削除する方法

MySQL で重複行を保持したまま削除する方法

Barbara Streisand
リリース: 2025-01-23 13:26:10
オリジナル
464 人が閲覧しました

How to Delete Duplicate Rows in MySQL While Keeping One?

MySQL から重複行を削除する方法 (1 行を保持)

クリーンで効率的なデータベースを維持する場合、重複排除は非常に重要です。 SELECT DISTINCT のようなクエリを使用して一意の値を選択するのは簡単ですが、DELETE 操作で重複を削除するには少し異なるアプローチが必要です。

重複を削除するには DELETE を使用します

コピーを保持しながらテーブルから重複行を削除するには、2 つの DELETE クエリ バリエーションを使用できます。

  1. 最小の ID 値を持つ行を保持します:

    <code class="language-sql">DELETE n1 FROM names n1, names n2
    WHERE n1.id > n2.id AND n1.name = n2.name</code>
    ログイン後にコピー
  2. 最も高い ID 値を持つ行を保持します:

    <code class="language-sql">DELETE n1 FROM names n1, names n2
    WHERE n1.id < n2.id AND n1.name = n2.name</code>
    ログイン後にコピー

これらのクエリは内部結合 (JOIN) を使用して、name 列に基づいて行を比較することに注意してください。次に、ある行の ID 値が別の行よりも高いか低いかという条件に基づいて、重複する行を識別して削除します。

注:

  • これらのクエリを間違って使用するとすべての行が削除される可能性があるため、これらのクエリを実行する前に必ずテーブルのテスト コピーを作成してください。
  • クエリに条件 AND n1.id != n2.id を含めると、名前は同じでも ID 値が異なる行は削除されなくなります。

INSERT を使用する代わりの方法:

大きなテーブルの場合、DISTINCTINSERT とともに使用すると、重複を削除するより効率的な方法になります。

<code class="language-sql">INSERT INTO tempTableName(cellId, attributeId, entityRowId, value)
SELECT DISTINCT cellId, attributeId, entityRowId, value
FROM tableName;</code>
ログイン後にコピー

このメソッドは、一意の値のみを含む新しいテーブルを作成し、重複を効果的に削除します。

以上がMySQL で重複行を保持したまま削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート