1

私はかなり単純なテストデータベースを持っています:

id  email
1   blue@yellow.com
2   pink@test.com
3   ace@ace.com
4   ace@ace.com
5   peter@something.com
6   peter@something.com
7   mouse@mouse.com
8   monkeyman@test.com
9   mouse@mouse.com

テーブルを次のように変更する必要がある重複を削除したい:

id  email
1   blue@yellow.com
2   pink@test.com
3   ace@ace.com
5   peter@something.com
7   mouse@mouse.com
8   monkeyman@test.com

または、新しいIDを使用しても問題ありません。

私はこのちょっとしたことにつまずいた:

mysqli_query($con,"ALTER IGNORE TABLE mytest ADD UNIQUE (email,id)");

しかし、残念ながら、それは何もしません。私は何を間違っていますか?

4

2 に答える 2

4

試してみてくださいmysqli_query($con,"ALTER IGNORE TABLE mytest ADD UNIQUE (email)");

UNIQUE (email,id)ID と電子メールのペアは一意である必要がありますが、ID が主キーであると想定しているため、一意である必要はありません。

于 2013-06-19T12:46:09.543 に答える
1

あなたと同じように、@Havsmonstretソリューションは良いです。
ドキュメントhttp://dev.mysql.com/doc/refman/5.1/en/alter-table.htmlで説明されているように動作するはずです。
しかし、何かが間違っています。そうではありません。
最近のバージョンの InnoDB にはバグがあるため http://bugs.mysql.com/bug.php?id=40344

このクエリを試してみてください。うまくいきました:

SET SESSION old_alter_table=1;
ALTER IGNORE TABLE mytest ADD UNIQUE (email,id);
于 2013-06-19T13:10:59.823 に答える