我有一个带有唯一索引的条形码列表。数据已在每个条形码的末尾添加了额外的字符(-xx)以防止出现重复,但是一旦删除后缀,将会出现大量重复项。下面是数据的一个示例:Mysql - 删除重复记录
itemnumber barcode
17912 2-14
18082 2-1
21870 2-10
29219 2-8
然后我创建了两个临时表,玛蒂和曼尼,既与itemnumber和剥离下来条形码。所以,这两个表将包含
itemnumber barcode
17912 2
18082 2
21870 2
29219 2
等
而且我试图删除所有,但在马蒂表条形码中的第一项“2”(和所有其他条形码)。我希望然后用正确的第一项更新原始表,用户可以在应用程序中及时修复重复项。
所以,这是我的查询,删除所有,但在马蒂表中的每个条形码
DELETE FROM marty
WHERE itemnumber NOT IN
(SELECT MIN(itemnumber) FROM manny GROUP BY barcode)
中的第一项有13万行的马蒂和曼尼。该查询花了24小时,然后没有正确完成。与服务器的连接崩溃,并且查询没有执行所有更新。
有没有更好的方式来处理这一点,就不是我们的子查询,我认为这是造成延误?这个团队可能会放慢速度,因为有这么多的记录。
感谢
是'itemnumber'独特之处?如果是的话,我认为你的方法最终会奏效,尽管它效率低下,因为它搜索整个“曼尼”表中的每一行“烈士”。 – gcbenison 2012-03-20 12:44:39