ホームページ >データベース >mysql チュートリアル >1 つのレコードを保持しながら MySQL で重複行を効率的に削除する方法
MySQL の重複行 (重複データ) を削除
質問:
一意の値ごとに 1 つのレコードを保持しながら、MySQL テーブルから重複行を削除するにはどうすればよいですか?
例:
名前テーブル内の次のデータについて考えてみましょう:
id | name |
---|---|
1 | |
2 | yahoo |
3 | msn |
4 | |
5 | |
6 | yahoo |
解決策:
警告: 必ず、最初にテーブルのテスト コピーに対してこの操作を実行するように注意してください。
重複する行をすべて削除し (1 行は保持)、最小または最大の ID 値を持つレコードを保持するには、次のクエリを使用します。
最小の 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>
追加メモ:
AND n1.id != n2.id
を追加してください。 <code class="language-sql">INSERT INTO tempTableName(cellId,attributeId,entityRowId,value) SELECT DISTINCT cellId,attributeId,entityRowId,value FROM tableName;</code>
以上が1 つのレコードを保持しながら MySQL で重複行を効率的に削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。