您的位置:首页 > 数据库

SQL删除重复数据

2017-05-06 16:42 246 查看

这个应用场景也不多说了

with C as
(
select orderid,ROW_NUMBER() over(partition by orderid order by (select null)) as n
from Sales.MyOrders
)
delete from C where n>1

利用row_number()跟rank()也可以,

Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。 
Rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。
with C as
(
select orderid,ROW_NUMBER() over(order by orderid) as rownum,RANK() over(order by orderid) as rnk
from Sales.Orders
)
delete from C where rownum<>rnk

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: