MySQL から重複行を削除する方法 (1 行を保持)
クリーンで効率的なデータベースを維持する場合、重複排除は非常に重要です。 SELECT DISTINCT
のようなクエリを使用して一意の値を選択するのは簡単ですが、DELETE
操作で重複を削除するには少し異なるアプローチが必要です。
重複を削除するには DELETE を使用します
コピーを保持しながらテーブルから重複行を削除するには、2 つの DELETE
クエリ バリエーションを使用できます。
最小の ID 値を持つ行を保持します:
<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name</code>
最も高い 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 を使用する代わりの方法:
大きなテーブルの場合、DISTINCT
を INSERT
とともに使用すると、重複を削除するより効率的な方法になります。
<code class="language-sql">INSERT INTO tempTableName(cellId, attributeId, entityRowId, value) SELECT DISTINCT cellId, attributeId, entityRowId, value FROM tableName;</code>
このメソッドは、一意の値のみを含む新しいテーブルを作成し、重複を効果的に削除します。
以上がMySQL で重複行を保持したまま削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。