Php 从mysql表中删除重复项?

Php 从mysql表中删除重复项?,php,duplicates,alter,Php,Duplicates,Alter,我有一个相当简单的测试数据库: 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@ye

我有一个相当简单的测试数据库:

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
或者换一个新的身份证也没关系

我偶然发现了一个小插曲:

mysqli_query($con,"ALTER IGNORE TABLE mytest ADD UNIQUE (email,id)");
但是,唉,它什么也没做。我做错了什么?

试试
mysqli\u查询($con,“ALTER IGNORE TABLE mytest ADD UNIQUE(email)”)

UNIQUE(email,id)
意味着id和email对应该是唯一的,因为我假设id是主键,所以它从来都不是唯一的。

尝试
mysqli\u查询($con,“ALTER IGNORE TABLE mytest ADD UNIQUE(email)”


UNIQUE(email,id)
意味着id和email对应该是唯一的,因为我假设id是主键,所以它从来都不是唯一的。

@Havsmonstret解决方案很好,就像您的一样。
它应该按照文档中的描述工作。
但有点不对劲。它没有。
因为InnoDB的一些最新版本中存在bug

试试这个,它对我很有用:

SET SESSION old_alter_table=1;
ALTER IGNORE TABLE mytest ADD UNIQUE (email,id);

@Havsmonstret解决方案和您的一样好。
它应该按照文档中的描述工作。
但有点不对劲。它没有。
因为InnoDB的一些最新版本中存在bug

试试这个,它对我很有用:

SET SESSION old_alter_table=1;
ALTER IGNORE TABLE mytest ADD UNIQUE (email,id);

可能重复:如果ID是主键,则它已经是唯一的。您可以简单地:
ALTER IGNORE TABLE my_TABLE ADD UNIQUE(email)
测试并确认。潜在重复:如果ID是您的主键,则它已经是唯一的。您可以简单地:
ALTER IGNORE TABLE my_TABLE ADD UNIQUE(email)
测试并确认。谢谢您,我将尝试这种方式。这将提供重复条目。。对于键…
据我所知,我找到了感谢您的原因,我将尝试这样做。这将提供重复输入。。对于key…
据我所知,我找到了small从未来大喊感谢的原因,很显然,这已经有10年了,mysql仍然没有修复它。虽然我猜这是意料之中的事,但它在MariaDB中也可悲地出现了:(来自未来的小小呼喊感谢,显然已经过去了10年,mysql仍然没有修复它。虽然我猜这是意料之中的事,但它也可悲地出现在MariaDB中:(