MySQL-删除重复项

我有一个带有唯一索引的条形码列的表.为了防止重复,在每个条形码的末尾已为数据加载了额外的字符(-xx),但是一旦我删除后缀,就会有很多重复.这是数据示例:

itemnumber  barcode

17912       2-14
18082       2-1
21870       2-10
29219       2-8

然后,我创建了两个临时表,分别是marty和manny,均带有itemnumber和简化后的条形码.因此,两个表都将包含

itemnumber  barcode

17912       2
18082       2
21870       2
29219       2

等等

然后,我试图删除Marty表中除第一个条形码为“ 2”以外的所有条目(以及其他所有条形码).我希望然后使用正确的第一项更新原始表,并且用户可以及时在应用程序中自行修复重复项.

因此,这是我的查询,以删除每个条形码的Marty表中除第一个条目以外的所有条目

DELETE FROM marty
  WHERE itemnumber NOT IN
    (SELECT MIN(itemnumber) FROM manny GROUP BY barcode)

马蒂和曼尼共有130,000行.查询花费了24个小时以上,然后没有正确完成.与服务器的连接崩溃,查询未执行所有更新.

有没有更好的方法来解决这个问题呢?如此多的记录,group by可能也会使事情变慢.

谢谢

解决方法:

另一种变体:此变体无需任何临时表即可删除重复项:

 Delete m1
 From Marty m1
 join Marty m2 
    on m1.barcode = m2.barcode 
    and m1.itemnumber > m2.itemnumber
上一篇:python-从numpy数组中删除出现多次的元素


下一篇:python-如何在大熊猫中以组为单位在单列中删除重复数据?