dlete dulate with
CTE + ROW_NUMBER() to Delete Duplicates
Step 1: Original Table
| ID | Name | |
|---|---|---|
| 1 | Ram | ram@gmail.com |
| 2 | Shyam | shyam@gmail.com |
| 3 | Ram | ram@gmail.com |
| 4 | Mohan | mohan@gmail.com |
| 5 | Ram | ram@gmail.com |
Duplicate Email: ram@gmail.com
Step 2: Apply ROW_NUMBER()
WITH CTE AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY Email ORDER BY ID) AS rn
FROM Employees
)
SELECT * FROM CTE;
| ID | Name | rn | |
|---|---|---|---|
| 1 | Ram | ram@gmail.com | 1 |
| 3 | Ram | ram@gmail.com | 2 |
| 5 | Ram | ram@gmail.com | 3 |
| 2 | Shyam | shyam@gmail.com | 1 |
| 4 | Mohan | mohan@gmail.com | 1 |
Explanation:
- PARTITION BY Email → Groups duplicates
- ORDER BY ID → Sorts records
- ROW_NUMBER() → Assigns numbers (1,2,3...)
Step 3: Delete Duplicates
WITH CTE AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY Email ORDER BY ID) AS rn
FROM Employees
)
DELETE FROM CTE
WHERE rn > 1;
Final Result (After Delete)
| ID | Name | |
|---|---|---|
| 1 | Ram | ram@gmail.com |
| 2 | Shyam | shyam@gmail.com |
| 4 | Mohan | mohan@gmail.com |
Duplicates removed successfully ✅
Comments
Post a Comment