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

标签: 高效去重
9人阅读 评论(0) 收藏 举报
分类:

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

其实,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

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

查看评论

sqlserver数据库入门

sqlserver是微软主推的数据库,在数据库领域占有重要的地位,拥有众多世界五百强客户。 本门课程专为菜鸟量身定做,不需要具备任何基础,极速入门SQLserver数据库,为您的职业身涯添砖加瓦!
  • 2016年12月11日 11:31

SQLSERVER 怎样去除重复记录

 【SQLSERVER】怎样去除重复记录有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。 ...
  • cngkqy
  • cngkqy
  • 2007-11-29 10:33:00
  • 26385

sql高效去重重复数据方法

方法源地址  http://bbs.csdn.net/topics/380088407  其中5楼版主的回答
  • kasim416
  • kasim416
  • 2016-04-28 11:14:54
  • 390

SQL查询重复数据和清除重复数据

选择重复,消除重复和选择出序列 有例表:emp emp_no   name    age         001           Tom      17         002          ...
  • rockyvan
  • rockyvan
  • 2008-05-20 11:03:00
  • 77794

SQL Server 批量删除重复记录(批量、快速、安全)

利用分组排序,实现快速、安全、批量的删除重复记录
  • lqh4188
  • lqh4188
  • 2017-02-06 15:19:05
  • 1370

postgresql数据库三种删除重复数据的方法

PG数据库几种删除重复数据的方法在使用PG数据库的这段时间,总结了三种删除重复数据的方法,其中最容易想到的就是最常规的删除方法,但此方法性能较差,删数据耗时较久,虽容易实现,但性能太差,影响写数据的速...
  • arcticJian
  • arcticJian
  • 2015-11-25 21:18:51
  • 2451

SQL:DISTINCT 去除重复

1.作用于单列2.作用于多列3.COUNT统计4.distinct必须放在开头5.其他 在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键...
  • QingHeShiJiYuan
  • QingHeShiJiYuan
  • 2015-12-26 23:53:13
  • 81856

数据库中删除表中重复数据的一点心得

在一个表中有一个自动增长列c1,同时又有两个外健列分别指向另外两个标的主键c2,c3,突然有一天我想让c2与c3组合为一个唯一键,这个时候先必须删除关于c2与c3的重复键(因为c1不可能重复),这就是...
  • tz_xiong
  • tz_xiong
  • 2007-10-26 01:27:00
  • 4405

MySql数据库去除重复的数据

今天群内有群友提出了一个问题,就是MySql中删除
  • jeepxiaozi
  • jeepxiaozi
  • 2014-10-12 19:09:47
  • 31906

SQL查询去除重复数据(多行结果取第一行)

在平时的开发中,经常需要在多行数据里面剔除重复数据,如分组之前 的数据:而想要的结果:通常使用的方法如下:SQL: SELECT * FROM ( SELECT ROW_NU...
  • CodeMonkeys
  • CodeMonkeys
  • 2016-01-11 15:34:22
  • 2004
    个人资料
    等级:
    访问量: 2912
    积分: 49
    排名: 168万+
    文章分类
    文章存档
    最新评论