我的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
在此示例中,Id(1,3,5),(2,7)包含重复项。我想删除3,5,7行
预期产出
id | Entry | Value
--------------------------------
1 | AA15AA7515 | 11445588
2 | AAFIRNNFIE | 99586454
4 | AA9894AF56 | 15985632
6 | AA69481533 | 15454186
答案 0 :(得分:6)
你有一个包含重复行的表 - 不知何故,没有创建一个唯一索引,并且一个错误已经在表中添加了重复记录。
需要通过添加UNIQUE约束来更改表。
您可以按如下方式使用此查询:
DELETE from table1
USING table1, table1 as vtable
WHERE (NOT table1.ID>vtable.ID)
AND (table1.logEntry=vtable.logEntry)
您应该运行此查询以确保表中不再出现重复条目:
ALTER TABLE table ADD CONSTRAINT table_unique UNIQUE (field1,field2);
但如果表格为空,则可以执行此操作。
或者如果存在记录,请尝试添加IGNORE
ALTER IGNORE TABLE table ADD CONSTRAINT table_unique UNIQUE (field1,field2);
注意:如果您使用服务器端脚本插入数据(似乎您使用php标记),那么也要使用表中存在记录的验证。
答案 1 :(得分: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 );
这样可以正常工作。
答案 2 :(得分:5)
尝试这个
<div class="logo">
<p><a href="index.html"><img src="images/logo_sml.jpg"></a></p>
<p>Newton Public School<br>
Kanaka Nagar-Rt Nagar<br>
Reach Out, Reach High, Reach Beyond</p>
</div>
答案 3 :(得分:2)
这在MySQL中有点痛苦。我会使用left join
delete t
from table t left join
(select min(id) as minid
from table t2
group by entry
) tokeep
on t.id = tokeep.minid
where tokeep.minid is null;