经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
删除多个重复记录
来源:cnblogs  作者:Insus.NET  时间:2019/6/3 8:55:36  对本文有异议

博客中,Insus.NET有分享过处理重复记录的功能。如《删除重复Row记录数据https://www.cnblogs.com/insus/p/10890148.html

今天就改编这个,改为动态存储过程。日后可以针对任一张表来进行。

 

  1. SET ANSI_NULLS ON
  2. GO
  3. SET QUOTED_IDENTIFIER ON
  4. GO
  5. -- =============================================
  6. -- Author: Insus.NET
  7. -- Blog: https://insus.cnblogs.com
  8. -- Create date: 2019-05-31
  9. -- Update date: 2019-05-31
  10. -- Description: 删除多个重复记录
  11. -- =============================================
  12. CREATE PROCEDURE [dbo].[usp_Delete_Multiple_Duplicate_Record] (
  13. @TABLE_NAME SYSNAME,
  14. @Refer_Column_lists NVARCHAR(MAX) -- '[a],[b],[c]'
  15. )
  16. AS
  17. BEGIN
  18. DECLARE @query NVARCHAR(MAX) = N'
  19. ;WITH cte_temp_table(rank_num,'+ @Refer_Column_lists +')
  20. AS (
  21. SELECT ROW_NUMBER() OVER(PARTITION BY '+ @Refer_Column_lists +' ORDER BY '+ @Refer_Column_lists +') AS rank_num, '+ @Refer_Column_lists +'
  22. FROM '+ @TABLE_NAME +'
  23. )
  24. DELETE FROM cte_temp_table WHERE rank_num > 1;
  25. '
  26. EXECUTE sp_executeSql @query
  27. END
Source Code

 

演示:

 

  1. IF OBJECT_ID('tempdb.dbo.#Part') IS NOT NULL DROP TABLE #Part
  2. CREATE TABLE #Part (
  3. [ID] INT,
  4. [Item] NVARCHAR(40)
  5. )
  6. GO
  7. INSERT INTO #Part ([ID],[Item]) VALUES
  8. (23394,'I32-GG443-QT0098-0001'),
  9. (45008,'I38-AA321-WS0098-0506'),
  10. (14350,'K38-12321-5456UD-3493'),
  11. (64582,'872-RTDE3-Q459PW-2323'),
  12. (23545,'098-SSSS1-WS0098-5526'),
  13. (80075,'B78-F1H2Y-5456UD-2530'),
  14. (53567,'PO0-7G7G7-JJY098-0077'),
  15. (44349,'54F-ART43-6545NN-2514'),
  16. (36574,'X3C-SDEWE-3ER808-8764'),
  17. (36574,'RVC-43ASE-H43QWW-9753'),
  18. (14350,'K38-12321-5456UD-3493'),
  19. (64582,'872-RTDE3-Q459PW-2323'),
  20. (80075,'B78-F1H2Y-5456UD-2530'),
  21. (53567,'PO0-7G7G7-JJY098-0077'),
  22. (44349,'54F-ART43-6545NN-2514'),
  23. (44349,'54F-ART43-6545NN-2514'),
  24. (36574,'X3C-SDEWE-3ER808-8764')
  25. GO
  26.  
  27.  
  28. EXECUTE [dbo].[usp_Delete_Multiple_Duplicate_Record] #Part,'[ID],[Item]'
  29.  
  30. SELECT * FROM #Part
Source Code

 

原文链接:http://www.cnblogs.com/insus/p/10955759.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号