【数据库】SQLSERVER利用系统方式高效去除重复数据行

不知道各位同学有没有遇到这样的痛苦:当数据库里的数据量级很大很大的时候,发现里面很多重复的数据,这个时候用常规语句写法去删除的时候,效率非常低。

其实,SQLSERVER里自从SQL2005以后已经提供了很多系统函数,可以方便快速的处理。

可以使用  ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL2)

解释一下:表示根据COL1分组,在分组内部根据 COL2排序

                 函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

举个例子,就非常清楚明白了。

  WITH TEST AS
 (
    SELECT ROW_NUMBER() 
    OVER(PARTITION BY col1,col2,col3 order by col4) 
    AS NUM,* FROM  table1

 )

--只保留num=1的记录,重复的删除

 DELETE FROM TEST  WHERE NUM != 1

 经测试,效率非常高。有兴趣的同学可以尝试一下。

阅读更多
文章标签: 高效去重
个人分类: 数据库
上一篇IOS跳转到AppStore应用详情页面方法
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭