Introduction
How to delete duplicate records from a SQL data table using CTE (common table expression). Specifies a temporary named result set, known as a common table expression (CTE).
Syntax
- WITH table_nameCTE AS
- (
- SELECT*, ROW_NUMBER() over (PARTITION BY ID ORDER BY ID) as < alias_name >
- FROM table_name
- )
- DELETE FROM table_nameCTE WHERE alias_name >1
Step 1
Open SQL Server 2014 or your choice. Create table with name Employees.
- create table Employees
- (
- ID int,
- Name nvarchar(50),
- Gender char(10),
- Salary int
- )
Step 2
Insert some duplicate record. Below is sample record.
- insert into Employees values(1,'Farhan Ahmed','Male',60000)
- insert into Employees values(5,'Monika','Female',25000)
- insert into Employees values(2,'Abdul Raheem','Male',30000)
- insert into Employees values(4,'Rahul Sharma','Male',60000)
- insert into Employees values(1,'Farhan Ahmed','Male',60000)
- insert into Employees values(2,'Abdul Raheem','Male',30000)
- insert into Employees values(5,'Monika','Female',25000)
- insert into Employees values(4,'Rahul Sharma','Male',60000)
- insert into Employees values(1,'Farhan Ahmed','Male',60000)
- insert into Employees values(3,'Priya','Female',20000)
- insert into Employees values(5,'Monika','Female',25000)
- insert into Employees values(4,'Rahul Sharma','Male',60000)
- insert into Employees values(5,'Monika','Female',25000)
- insert into Employees values(2,'Abdul Raheem','Male',30000)
- insert into Employees values(1,'Farhan Ahmed','Male',60000)
- insert into Employees values(4,'Rahul Sharma','Male',60000)
Step 3
Write CTE (Common table expression) and partition records.
- WITH EmployeesCTE as
- (
- SELECT*, ROW_NUMBER() over (PARTITION BY ID ORDER BY ID) as RowNumber
- FROM Employees
- )
- SELECT * FROM EmployeesCTE

Step 4
Write query for delete duplicate record with CTE (common table expression).
- WITH EmployeesCTE as
- (
- SELECT*, ROW_NUMBER() over (PARTITION BY ID ORDER BY ID) as RowNumber
- FROM Employees
- )
- DELETE FROM EmployeesCTE WHERE RowNumber>1
- SELECT * FROM Employees


Dharmaraj NagarajanPosted May 8, 2019, 7:11 PM
Excellent article explaining the use of CTE
Micro techiePosted Jan 6, 2019, 11:43 PM
Very useful, thank you
Joginder BangerPosted Jan 4, 2019, 1:26 AM
You have lot's of option there to delete the duplicate record but this is best.
Hiten PandyaPosted Jan 4, 2019, 12:12 AM
Good one. Keep sharing :)
Akhter HUssainPosted Jan 3, 2019, 11:59 PM
Thanks for informative post
Laxmidhar SahooPosted Jan 3, 2019, 10:55 PM
Good practice