4

1つの列にいくつかの重複した値を含むテーブルがあります。つまり、テーブルがありますemails

id email
1  test@test.com
2  test@test.com
3  more@most.many 
4  cook@sheep.com

ID '2' の行を削除したいと思います。emailそして、一意のインデックスを作成して、テーブルの冗長性を強制的に削除することで、これを行いたいと思います。

ここで参照されているこのメソッドを見てきました( http://www.it-iss.com/mysql/sql-removing-duplicate-records/ )およびhttps://stackoverflow.com/questions/19000050/how-to-delete- mysql の変更無視コマンドを使用した最初の二重レコード

しかし、私がステートメントを試みるとき alter ignore table emails_test add unique index(email)

ignoreキーワードを含めなかったかのように、test@test.com の重複エントリ エラーが発生します。

私がここに欠けているものはありますか?これが不可能な場合、たとえば一時テーブルを使用するよりも簡単な、重複を削除する代替方法は何ですか

4

1 に答える 1

12

これをいくつかの個別の手順として試すことができます。

CREATE TABLE _emails LIKE emails
ALTER TABLE _emails ADD UNIQUE INDEX(email)
INSERT IGNORE INTO _emails SELECT * FROM emails
RENAME TABLE emails TO emails_old, _emails TO emails
于 2013-11-11T16:49:56.640 に答える