一尘不染

Mysql重复行(使用2列检测到重复)

mysql

如何删除此设置中的重复项?

id    A       B 
----------------
1     apple   2  
2     orange  1       
3     apple   2   
4     apple   1

在这里,我要删除两次的(apple,2)。ID号是唯一的。如果没有,我会使用DISTINCT关键字。我可以通过A列和B列创建一个键,然后使用DISTINCT关键字获得所需的内容吗?非常感谢您的答复。


阅读 306

收藏
2020-05-17

共1个答案

一尘不染

delete from myTable 
where id not in
(select min(id)
from myTable
group by A, B)

也就是说,括号中的select返回A和B的每个分组的第一个ID;删除不在此集合中的所有ID,将删除A-B组合首次出现后的所有出现。

编辑 :此语法似乎有问题:请参阅错误报告:

http://bugs.mysql.com/bug.php?id=5037

可能的解决方法是:

delete from myTable 
where id not in
(
      select minid from 
      (select min(id) as minid from myTable group by A, B) as newtable
)
2020-05-17