SQL Server 批量删除重复记录(批量、快速、安全)
来源:互联网 发布:淘宝双十一抢货攻略 编辑:程序博客网 时间:2024/05/22 06:06
关键字:ROW_NUMBER(或RANK) partition BY
利用分组排序,可实现快速、安全、批量的对重复记录进行删除,
示例:
创建测试表
CREATE TABLE [dbo].[T_Corse]([ID] [INT] IDENTITY(1,1) NOT NULL,--主键[UserID] [INT] NOT NULL, --用户主键[CourseCode] [VARCHAR](50) NULL, --课程代码[SubjectCode] [VARCHAR](50) NULL, --学段代码[Creator] [VARCHAR](50) NULL, [CreateTime] [DATETIME] NULL, CONSTRAINT [PK_T_Corse] PRIMARY KEY CLUSTERED ([ID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]
添加测试数据(自行添加即可)
分组编号
--按UserID,CourseCode,SubjectCode分组排序SELECT *,RANK() OVER(PARTITION BY UserID,CourseCode,SubjectCode ORDER BY ID DESC) AS RowNoFROM dbo.T_Corse;
获取重复记录
--重复记录查询SELECT * FROM (SELECT *,RANK() OVER(PARTITION BY UserID,CourseCode,SubjectCode ORDER BY ID DESC) AS RowNoFROM dbo.T_Corse)Ranked WHERE Ranked.RowNo>1;
删除重复记录
--删除重复记录(保留最新记录)DELETE T_Corse WHERE id IN(SELECT ID FROM(SELECT *,RANK() OVER(PARTITION BY UserID,CourseCode,SubjectCode ORDER BY ID DESC) AS RowNoFROM dbo.T_Corse)Ranked WHERE Ranked.RowNo>1);
0 0
- SQL Server 批量删除重复记录(批量、快速、安全)
- SQL SERVER 批量插入记录
- 批量删除SQL Server表
- sql server 批量删除表
- 在SQL Server中快速删除重复记录
- 在SQL Server中快速删除重复记录
- 在SQL Server中快速删除重复记录(多图)
- 在SQL Server中快速删除重复记录(多图)
- 在SQL Server中快速删除重复记录
- SQL Server中快速删除重复记录(转东转西)
- 在SQL Server中快速删除重复记录(多图)
- 在SQL Server中快速删除重复记录
- 在SQL Server中快速删除重复记录
- 在SQL Server中快速删除重复记录(多图)
- 在SQL Server中快速删除重复记录(多图)
- 在SQL Server中快速删除重复记录
- 在SQL Server中快速删除重复记录(多图)
- 在SQL Server中快速删除重复记录
- CI Weekly #13 | 用更 Geek 的方式配置你的 CI 工作流
- kurento-hello-world V6.0源码分析
- 网站屏蔽360或者google chrome浏览器
- canvas-图像布局填充
- final 关键字
- SQL Server 批量删除重复记录(批量、快速、安全)
- IO流_异常、File总结
- java.exe finished with nonzero exit value
- 【JavaEE】Java内省Introspector、PropertyDescriptor与JavaBean
- 【Android通讯】多线程任务开发
- OutputStreamWriter
- kurento-one2many-broadcast V6.0源码分析
- AngularJS Component详解
- pdf2swf