SQL删除两个重复记录中的一个?

时间:2014-07-15 21:49:35

标签: sql

我有一个数据库有一个问题,即所有内容都有两个相同的记录,但它们都有不同的ID,但它们有2列(实际数据)相同。我想知道是否有一个很好的方法来获得DELETE语句,我可以选择所有这些记录,其中2列匹配,但具有不同的ID并删除一个(无关紧要)?

如果可以的话,你可以给我一个代码示例吗?

2 个答案:

答案 0 :(得分:2)

Delete from ... 
where id in (select max(id), count as c 
             from ... 
             group by data1, data2 
             having c >1)

我们的想法是通过将列上的行分组相同并确保有多行(having子句)来选择所有重复行的较大id。

答案 1 :(得分:1)

delete from your_table
where id not in
(
  select min(id)
  from your_table
  group by col2
)