删除mySql表中的第二个重复记录

Din*_*iNu 5 mysql

我的MySQL表中有2,00,00行数据的集合.现在我想删除表中的第二个重复记录.(即),不应删除重复值的第一条记录.仅删除表格中的第二个重复记录.

id  |   logEntry    |   logValue
--------------------------------
1   |   AA15AA7515  |   11445588
2   |   AAFIRNNFIE  |   99586454
3   |   AA15AA7515  |   14589313
4   |   AA9894AF56  |   15985632
5   |   AA15AA7515  |   16124246
6   |   AA69481533  |   15454186
7   |   AAFIRNNFIE  |   12788549
Run Code Online (Sandbox Code Playgroud)

在此示例中,Id(1,3,5),(2,7)包含重复项.我想删除3,5,7行

预期产出

id  |      Entry    |   Value
--------------------------------
1   |   AA15AA7515  |   11445588
2   |   AAFIRNNFIE  |   99586454
4   |   AA9894AF56  |   15985632
6   |   AA69481533  |   15454186
Run Code Online (Sandbox Code Playgroud)

Dee*_*kar 6

您有一个包含重复行的表 - 不知何故,没有创建唯一索引,并且错误已将重复记录添加到您的表中.

需要通过添加UNIQUE约束来更改表.

您可以按如下方式使用此查询:

DELETE from table1
USING table1, table1 as vtable
WHERE (NOT table1.ID>vtable.ID)
AND (table1.logEntry=vtable.logEntry)
Run Code Online (Sandbox Code Playgroud)

您应该运行此查询以确保表中不再出现重复条目​​:

ALTER TABLE table ADD CONSTRAINT table_unique UNIQUE (field1,field2);
Run Code Online (Sandbox Code Playgroud)

但是如果表是空的,你可以这样做.

或者如果存在记录,请尝试添加 IGNORE

ALTER IGNORE TABLE table ADD CONSTRAINT table_unique UNIQUE (field1,field2);
Run Code Online (Sandbox Code Playgroud)

注意:如果您使用服务器端脚本插入数据(似乎您使用php标记),那么也使用表中的存在记录验证.


Nag*_*ade 6

delete from temp1 where id in ( select x.id from (select a.id from temp1 a,
 temp1 b where a.id<>b.id and a.logentry=b.logentry and a.id>b.id group by
 a.id) x );
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作.

点击这里:http://www.sqlfiddle.com/#!9/825e0/1


Muk*_*ude 5

试试这个

Delete From table_name
where id not in( select min(id) from table_name
group by Entry )  
Run Code Online (Sandbox Code Playgroud)