gpt4 book ai didi

Mysql - 删除重复项

转载 作者:可可西里 更新时间:2023-11-01 08:07:17 24 4
gpt4 key购买 nike

我有一个表,其中的条形码列具有唯一索引。数据已在每个条形码的末尾加载了额外的字符 (-xx) 以防止重复,但是一旦我去掉后缀就会有很多重复项。这是数据示例:

itemnumber  barcode

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

然后我创建了两个临时表,marty 和 manny,它们都包含商品编号和精简的条形码。所以,两个表都包含

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)

marty 和 manny 中有 130,000 行。查询用了 24 多个小时,然后没有正确完成。与服务器的连接崩溃,查询未完成所有更新。

有没有更好的方法来解决这个问题,而不是我们的子查询,我认为这是导致延迟的原因?如此多的记录,group by 可能也会减慢速度。

谢谢

最佳答案

另一个变体:这个变体没有任何用于删除重复项的临时表:

 Delete m1
From Marty m1
join Marty m2
on m1.barcode = m2.barcode
and m1.itemnumber > m2.itemnumber

关于Mysql - 删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9785552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com