我有一个数据库有一个问题,即所有内容都有两个相同的记录,但它们都有不同的ID,但它们有2列(实际数据)相同。我想知道是否有一个很好的方法来获得DELETE语句,我可以选择所有这些记录,其中2列匹配,但具有不同的ID并删除一个(无关紧要)?
如果可以的话,你可以给我一个代码示例吗?
答案 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
)