Suppose we have many records in a table and some of them are duplicate records. So it is necessary to delete all duplicate records from the table as per our business requirement.
Here, I am creating a sample table and inserting some junk data for deleting duplicate rows.
Below is the script for creating a sample table.
- CREATE TABLE Student
- (
- Id int IDENTITY(1,1) NOT NULL,
- Name varchar(50) NOT NULL,
- Class varchar(50) NULL,
- FatherName varchar(50) NULL,
- )
Below is the script for inserting some junk data into the above table.
- INSERT INTO Student(Name, Class, FatherName)
- VALUES
- ('student1', 'one', 'father1'),
- ('student1', 'one', 'father1'),
- ('student2', 'two', 'father2'),
- ('student3', 'three', 'father3'),
- ('student3', 'three', 'father3'),
- ('student3', 'three', 'father3'),
- ('student4', 'four', 'father4');
In the below image, we can see inserted data into the above Student table.
![Student table]()
Here, there are some duplicate records present into the Student table.
So now we are deleting duplicate rows by using Common Table Expression (CTE) and ROW_NUMBER().
Below is the script for the same.
- WITH CTE as
- (
- SELECT ROW_NUMBER() Over(PARTITION BY Name,Class ORDER BY Name)
- As RowNumber,* FROM Student
- )
- DELETE FROM CTE where RowNumber >1
Now in below image we can see that three rows are affected into the Student table.
![Run]()
Now using select query to see records into the Student table.
In the below image we can see that there are no duplicate records present into the Student table.
![result]()