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中:(