MySQL で一意のインデックスを使用してテーブルから重複を削除する方法
Oct 25, 2024 am 07:46 AM一意のインデックスによる重複の削除
重複レコードを含む大きなテーブルがあり、一意のインデックスを作成して重複を削除する場合は、潜在的な結果に注意する必要があります。
既に重複を含むテーブルに一意のインデックスを追加しようとすると、重複キー エラーにより操作は失敗します。これは、一意のインデックスによって、含まれるデータの一意性が強制されるためです。
ただし、この問題には回避策があります。一意のインデックスを作成するときに IGNORE 修飾子を使用できます。これにより、重複する値を無視し、一意の値のみを挿入するように MySQL に指示されます。
<code class="sql">ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D) IGNORE;</code>
IGNORE 修飾子を使用すると重複は削除されますが、どの行を保持するかは指定されないことに注意することが重要です。 。 MySQL は重複ごとに 1 つの行を任意に選択し、残りは破棄します。
MySQL バージョン 5.7.4 以降を使用している場合は、ALTER TABLE の IGNORE 修飾子が削除されているため、エラーが発生します。この場合、次の回避策を使用できます:
- データを一時テーブルにコピーします。
- 元のテーブルを切り詰めます。
- UNIQUE インデックスを作成します。元のテーブル。
- INSERT IGNORE を使用して、データを元のテーブルに挿入し直します。
<code class="sql">CREATE TABLE tmp_data SELECT * FROM mytable; TRUNCATE TABLE mytable; ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D); INSERT IGNORE INTO mytable SELECT * from tmp_data; DROP TABLE tmp_data;</code>
INSERT IGNORE を使用すると、重複する値は無視され、一意の値のみが挿入されます。データが挿入されたら、一時テーブルを削除できます。
以上がMySQL で一意のインデックスを使用してテーブルから重複を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
