Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL从表中删除第一个重复项_Mysql_Sql - Fatal编程技术网

MYSQL从表中删除第一个重复项

MYSQL从表中删除第一个重复项,mysql,sql,Mysql,Sql,我的表中有511个副本,我需要删除这些,但不是原件。因此,我想删除每一个重复的第二次出现 我该怎么做 表: code / status / time E3F4FF928A / 0 / 07D95444BB / 0 / 07D95444BB / 0 / 40006C128F / 0 / 1315293012 2B45790E52 / 0 / 40006C128F / 0 / 1315293012 在列上的表中添加唯一索引,该索引应是唯一的,并忽略错误

我的表中有511个副本,我需要删除这些,但不是原件。因此,我想删除每一个重复的第二次出现

我该怎么做

表:

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;