Monday, December 19, 2011

Delete Duplicate Records Or Rows - Sql Server

Delete/Remove duplicate records from MS Sql Server      
  we have 3 methods to do this
like we have table emp with column fname,dept
 table:  emp
fname           dept 
aditya           mca
abhishek       mca
akhilesh        mca
anand           mba
ram niwas     mba
aditya          mca
abhishek      mca
arbind          btech

(aditya mca) & (abhishek mca)  rows are deuplicates in above table so we have three methods to remove duplicacy


Method 1:- 
by using Identity Column

step1.   create a identity column in our table

alter table emp add id int identity(1,1) 

step 2 write this query 

delete from emp 
where id not in  (select min(id)
from  emp  group by fname,dept)

Method 2:-

Delete duplicate records using Row_Number()

 If you do not want to make any changes in table design or don't want to create identity column on table then you can remove duplicate records using Row_Number in sql server 2005 onwards.


WITH DuplicateRecords AS
(
SELECT *,row_number() OVER(PARTITION BY fname,dept ORDER BY fname 
)
AS RowNumber FROMemp
)
DELETE FROM DuplicateRecords WHERE RowNumber>1
  
Method 3:-

Remove duplicate rows/Records using temporary table

by using distinct


SELECT distinct * into TempTable FROM emp
GROUP BY fname,dept
HAVING COUNT(fname) > 1
DELETE emp WHERE fname
IN (SELECT fname FROM TempTable)
INSERT emp SELECT * FROM TempTable
DROP TABLE TempTable

 


 

 



No comments:

Post a Comment