MySQL 重复错误与 ALTER IGNORE TABLE

标签 mysql duplicates mysql-error-1062

我的 MySQL 中有一个表有重复项。我尝试删除重复项并保留一个条目。我没有主键

我可以通过以下方式找到重复项:

select user_id, server_id, count(*) as NumDuplicates
from user_server
group by user_id, server_id
having NumDuplicates > 1

但不能删除它们:

ALTER IGNORE TABLE `user_server`  
ADD UNIQUE INDEX (`user_id`, `server_id`);

甚至 SET foreign_key_checks = 0;不管用。 错误代码:1062。键“user_id_3”的重复条目“142-20”

MySQL 版本:5.5.18 引擎:InnoDB

还有其他方法吗?

最佳答案

因为你使用了INNO DB,

一个简单的技巧:

set session old_alter_table=1;
ALTER IGNORE TABLE `user_server`  
ADD UNIQUE INDEX (`user_id`, `server_id`);
set session old_alter_table=0;

这样就可以了

关于MySQL 重复错误与 ALTER IGNORE TABLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27492732/

相关文章:

php - MySQL查询的解决方案

mysql - 具有双重嵌套级别的 SQL 查询

mysql - 单个查询中的多个元键和元值(wordpress)

mysql - 导入错误的 MySQL 转储时如何跳过行

MySQL 工作台 : 'Use the old authentication protocol.' option causes error

java - 不使用集合从 java 列表中删除重复项

mysql/文件哈希问题

database - 在 Oracle 中查找重复数据

mysql - 错误 1062 (23000) : Duplicate entry 'DP1' for key 'PRIMARY'

mysql 唯一(多个键)