SQL Server 批量刪除重複記錄(批量、快速、安全)
關鍵字: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 RowNo
FROM dbo.T_Corse;
獲取重複記錄
--重複記錄查詢
SELECT * FROM (
SELECT *,RANK() OVER(PARTITION BY UserID,CourseCode,SubjectCode ORDER BY ID DESC) AS RowNo
FROM 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 RowNo
FROM dbo.T_Corse
)Ranked WHERE Ranked.RowNo>1
);
相關文章
- 在SQL Server中快速刪除重複記錄(轉)SQLServer
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄) 轉Oracle
- 【轉】oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- oracle-快速刪除重複的記錄Oracle
- ORACLE批量刪除無主鍵重複資料Oracle
- 高效快速刪除Oracle表中重複記錄Oracle
- sql刪除重複記錄只保留一條SQL
- 刪除Oracle重複記錄Oracle
- oracle刪除重複記錄Oracle
- Oracle 刪除表中重複記錄的DELETE SQLOracledeleteSQL
- MS SQL Server 刪除重複行資料SQLServer
- sql server 中刪除內容重複的某條記錄SQLServer
- mysql表刪除重複記錄方法MySql
- DB2 刪除重複記錄DB2
- 用SQL語句刪除重複記錄的四種方法SQL
- Oracle 查詢並刪除重複記錄的SQL語句OracleSQL
- ELK批量刪除索引及叢集相關操作記錄索引
- 批量刪除死鎖
- oracle批量刪除表Oracle
- hibernate批量刪除
- Oracle查詢重複資料與刪除重複記錄Oracle
- Oracle使用over()partition by刪除重複記錄Oracle
- Oracle如何刪除表中重複記錄Oracle
- db2刪除重複的記錄DB2
- 查詢刪除表中重複記錄
- 表格的批量重新命名與批量刪除
- php(js)批量刪除/單個刪除PHPJS
- 經典SQL面試題4:高效的刪除重複記錄方法SQL面試題
- oracle 對錶中的記錄進行大批量刪除Oracle
- Oracle查詢重複資料與刪除重複記錄方法Oracle
- 批量刪除 redis keysRedis
- git 批量刪除本地分支Git
- 批量刪除容器和映象
- 批量刪除表CHI_%
- MYSQL中刪除重複記錄的方法薦MySql
- SQL Server中刪除重複資料的幾個方法SQLServer
- linux 批量刪除,複製的一些命令Linux