MYSQL从表中删除第一个重复项
我的表中有511个副本,我需要删除这些,但不是原件。因此,我想删除每一个重复的第二次出现 我该怎么做 表:MYSQL从表中删除第一个重复项,mysql,sql,Mysql,Sql,我的表中有511个副本,我需要删除这些,但不是原件。因此,我想删除每一个重复的第二次出现 我该怎么做 表: code / status / time E3F4FF928A / 0 / 07D95444BB / 0 / 07D95444BB / 0 / 40006C128F / 0 / 1315293012 2B45790E52 / 0 / 40006C128F / 0 / 1315293012 在列上的表中添加唯一索引,该索引应是唯一的,并忽略错误
code / status / time
E3F4FF928A / 0 /
07D95444BB / 0 /
07D95444BB / 0 /
40006C128F / 0 / 1315293012
2B45790E52 / 0 /
40006C128F / 0 / 1315293012
在列上的表中添加唯一索引,该索引应是唯一的,并忽略错误
alter ignore table X add unique index (column_a)
这应该只删除第二个副本,并保留第三个和以后的副本
如果你想要一些不那么深奥的东西,并且你有一个时间戳列,也许你想这样做
DELETE t2 FROM table1 t2
INNER JOIN table1 t1 ON
(t1.somefield = t2.somefield
AND t1.otherfield = t2.otherfield /*add more fields if need be */
AND t2.`timestamp` > t1.`timestamp`)
WHERE (1=1) /*In some mode(s) MySQL requires a where clause with delete*/
ORDER BY t2.id ASC
只是今天遇到了这个问题(表中没有唯一的键) 我是这样解决的
DELETE FROM table where code=x and status=y and time=z LIMIT 1;
这将删除给定条件的前1行(如果您有n个重复项,请放入n-1以仅保留一个)。请发布您的表定义。它们是完全重复的,还是其中某个地方有唯一的键?真正的重复项是原始项的完全副本。您是否真的有重复的数据,或者您是否有许多数据相同的行,但auto inc列或created date之类的内容不同?您需要提供表架构(列)以及一些示例数据Deleted Deleted不是地址我希望每秒删除每个重复出现的数据。是的,这并不能达到预期的结果。请更具体一些。。你有一个b b c b a。。您想要bc还是bca?实际上,MySql指定:
只有第一行用于唯一键上有重复项的行。其他冲突行被删除了
+1,我喜欢这个答案,不过您可能需要一个复合索引,只需在索引中添加额外字段唯一索引(col1,col2,col3)。它没有回答问题
DELETE FROM table where code=x and status=y and time=z LIMIT 1;