我有一个相当简单的测试数据库:
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)");
但是,唉,它什么也没做。我做错了什么?
答案 0 :(得分:4)
尝试mysqli_query($con,"ALTER IGNORE TABLE mytest ADD UNIQUE (email)");
。
UNIQUE (email,id)
表示id和email对应该是唯一的,因为我假设id是主键,所以它永远不会是。
答案 1 :(得分: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);