若在建表的时候没有设立唯一性约束,而碰巧又插入了两笔一模一样的数据,该如何删除其中的一笔数据呢?
假设有一张名为Test的表,其中有两个属性Col1和Col2,可以使用以下语句来操作:
delete from (select Col1,row_number() over (partition by Col1 order by Col1 ) as rn,a.* from Test a) where rn <>1
本文介绍了一种在没有唯一性约束的情况下,如何从数据库表中删除重复记录的方法。以一张名为Test的表为例,通过使用row_number()窗口函数配合partition by子句来标记每组重复数据中的每一项,并通过where子句指定只保留每个重复组的第一条记录。
若在建表的时候没有设立唯一性约束,而碰巧又插入了两笔一模一样的数据,该如何删除其中的一笔数据呢?
假设有一张名为Test的表,其中有两个属性Col1和Col2,可以使用以下语句来操作:
delete from (select Col1,row_number() over (partition by Col1 order by Col1 ) as rn,a.* from Test a) where rn <>1