经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
mssql sqlserver 三种数据表数据去重方法分享
来源:cnblogs  作者:Adeal2008  时间:2019/2/28 9:37:16  对本文有异议

摘要:

下文将分享三种不同的数据去重方法
数据去重:需根据某一字段来界定,当此字段出现大于一行记录时,我们就界定为此行数据存在重复。



数据去重方法1:

当表中最在最大流水号时候,我们可以通过关联的方式为每条重复的记录获取唯一值

数据去重方法2:
为表中记录,按照指定字段进行群组,并获取最大流水号,然后再进行去重操作
 
数据去重方法3:
采用分组后,重复数据组内排名,如果排名大于1代表是重复数据行数据
 
三种去重方法效率对比:
方法3 > 方法2 > 方法1
 

  1. create table test(keyId int identity,sort varchar(10),
  2. info varchar(20))
  3. go
  4.  
  5. ---方法1
  6. truncate table test ;
  7. insert into test(sort,info)values('A','maomao365.com')--1
  8. insert into test(sort,info)values('A','猫猫小屋') --2
  9. insert into test(sort,info)values('B','mssql_blog') --3
  10. insert into test(sort,info)values('B','优秀的sql——blog') --4
  11. insert into test(sort,info)values('B','maomao365') --5
  12. insert into test(sort,info)values('C','sql优化blog') --6
  13. go
  14.  
  15. delete from test where test.keyId = (select max(b.keyId) from test b where test.sort=b.sort);
  16. select * from test
  17. ---方法2:
  18. truncate table test ;
  19. insert into test(sort,info)values('A','maomao365.com')
  20. insert into test(sort,info)values('A','猫猫小屋')
  21. insert into test(sort,info)values('B','mssql_blog')
  22. insert into test(sort,info)values('B','优秀的sql——blog')
  23. insert into test(sort,info)values('B','maomao365')
  24. insert into test(sort,info)values('C','sql优化blog')
  25. go
  26. delete from test
  27. where keyid not in(select min(keyId) from test group by sort having count(sort)>=1);
  28. select * from test
  29. ---方法3:
  30. truncate table test ;
  31. insert into test(sort,info)values('A','maomao365.com')
  32. insert into test(sort,info)values('A','猫猫小屋')
  33. insert into test(sort,info)values('B','mssql_blog')
  34. insert into test(sort,info)values('B','优秀的sql——blog')
  35. insert into test(sort,info)values('B','maomao365')
  36. insert into test(sort,info)values('C','sql优化blog')
  37. go
  38. delete A2 from (
  39. select row_Number() over(partition by sort order by keyid) as keyId_e,* from test
  40. ) as A2 where A2.keyId_e >1
  41.  
  42. select * from test
  43. go
  44. drop table test

 

<img src="http://www.maomao365.com/wp-content/uploads/2018/07/mssql_sqlserver_数据表数据去重的三种方法分享.png" alt="mssql_sqlserver_数据表数据去重的三种方法分享" width="813" height="749" class="size-full wp-image-6767" />

 

转自:http://www.maomao365.com/?p=6766

原文链接:http://www.cnblogs.com/lairui1232000/p/10441616.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号