|
|
|
Forum Newbie
      
Group: General Forum Members
Last Login: Tuesday, December 02, 2008 10:02 AM
Points: 1,
Visits: 5
|
|
With ROW_NUMBER ( ) Function And using CTE the Duplicate Records Can be Eliminated Easily.
Suppose we have the situation to delete some duplicate records in our table. Suppose consider one table
create table #Test ( EmpID int, EmpName varchar(50) )
–Insert the Records into #Test table
insert into #Test values(1,’Daya‘) insert into #Test values(1,’Daya‘) insert into #Test values(1,’Daya‘)
Now i have two duplicate records inserted and i want to delete those records. The following query will delete the duplicate records
–Query to Delete Duplicate Records
WITH Emp AS (SELECT ROW_NUMBER ( ) OVER ( PARTITION BY EmpID, EmpName ORDER BY EmpID ) AS RNUM FROM #Test ) DELETE FROM Emp WHERE RNUM > 1
|
|
|
|
|
Right there with Babe
      
Group: General Forum Members
Last Login: Wednesday, May 08, 2013 3:02 PM
Points: 768,
Visits: 1,159
|
|
Note: watch out for ending previous statement with SEMICOLON
Here's a working code sample
CREATE TABLE #Test ( EmpID INT, EmpName VARCHAR(50) )
INSERT INTO #Test VALUES(1,'Daya') INSERT INTO #Test VALUES(1,'Daya') INSERT INTO #Test VALUES(1,'Daya')
SELECT * FROM #Test;
WITH Emp AS (SELECT ROW_NUMBER ( ) OVER ( PARTITION BY EmpID, EmpName ORDER BY EmpID ) AS RNUM FROM #Test ) DELETE FROM Emp WHERE RNUM > 1 --SELECT FROM Emp WHERE RNUM > 1
SELECT * FROM #Test
DROP TABLE #Test
SQLServerNewbie
MCITP: Database Administrator SQL Server 2005
|
|
|
|
|
Forum Newbie
      
Group: General Forum Members
Last Login: Monday, July 16, 2012 5:50 AM
Points: 2,
Visits: 0
|
|
Delete From TableName Where ID Not IN { Select MAX(ID) From TableName Group By Col1, Col2... }
By The help of Table name useing ID and the Group By we can delete the duplicate record from table in sql server.
For more Interview question Click on billow link.
http://sqlserver4us.blogspot.in/
|
|
|
|
|
Old Hand
      
Group: General Forum Members
Last Login: Saturday, November 10, 2012 9:30 AM
Points: 388,
Visits: 603
|
|
weblorquins (7/16/2012)
Delete From TableName Where ID Not IN { Select MAX(ID) From TableName Group By Col1, Col2... } By The help of Table name useing ID and the Group By we can delete the duplicate record from table in sql server. For more Interview question Click on billow link. http://sqlserver4us.blogspot.in/
But this method will not be applicable if there is no id or numeric column.
--rhythmk ------------------------------------------------------------------ To post your question use below link
http://www.sqlservercentral.com/articles/Best+Practices/61537/
|
|
|
|
|
SSCertifiable
       
Group: General Forum Members
Last Login: Today @ 9:21 AM
Points: 5,099,
Visits: 20,191
|
|
rhythmk (7/16/2012)
weblorquins (7/16/2012)
Delete From TableName Where ID Not IN { Select MAX(ID) From TableName Group By Col1, Col2... } By The help of Table name useing ID and the Group By we can delete the duplicate record from table in sql server. For more Interview question Click on billow link. http://sqlserver4us.blogspot.in/ But this method will not be applicable if there is no id or numeric column.
It will work ... for example
create table #Test (EmpID VARCHAR(8), EmpName varchar(50)) insert into #Test VALUES('abc','Daya') insert into #Test values('abc','Daya') insert into #Test values('abc','Daya')
;WITH Emp AS (SELECT ROW_NUMBER ( ) OVER ( PARTITION BY EmpID, EmpName ORDER BY EmpID ) AS RNUM FROM #Test ) DELETE FROM Emp WHERE RNUM > 1 select EmpId, EmpName FROM #Test Result: abc Daya
If everything seems to be going well, you have obviously overlooked something.
Ron
Please help us, help you -before posting a question please read Before posting a performance problem please read
|
|
|
|
|
Old Hand
      
Group: General Forum Members
Last Login: Saturday, November 10, 2012 9:30 AM
Points: 388,
Visits: 603
|
|
bitbucket-25253 (7/16/2012)
rhythmk (7/16/2012)
weblorquins (7/16/2012)
Delete From TableName Where ID Not IN { Select MAX(ID) From TableName Group By Col1, Col2... } By The help of Table name useing ID and the Group By we can delete the duplicate record from table in sql server. For more Interview question Click on billow link. http://sqlserver4us.blogspot.in/ But this method will not be applicable if there is no id or numeric column. It will work ... for example create table #Test (EmpID VARCHAR(8), EmpName varchar(50)) insert into #Test VALUES('abc','Daya') insert into #Test values('abc','Daya') insert into #Test values('abc','Daya')
;WITH Emp AS (SELECT ROW_NUMBER ( ) OVER ( PARTITION BY EmpID, EmpName ORDER BY EmpID ) AS RNUM FROM #Test ) DELETE FROM Emp WHERE RNUM > 1 select EmpId, EmpName FROM #Test Result: abc Daya
Hi bitbucket,
I indicated the method posted by "weblorquins", the one used with table ID column and Group By clause.
--rhythmk ------------------------------------------------------------------ To post your question use below link
http://www.sqlservercentral.com/articles/Best+Practices/61537/
|
|
|
|
|
SSC Eights!
      
Group: General Forum Members
Last Login: Monday, February 11, 2013 2:46 AM
Points: 903,
Visits: 41
|
|
It is easy to delete records by considering two colmns
create table #Test (EmpID VARCHAR(8), EmpName varchar(50)) insert into #Test VALUES('abc','Daya') insert into #Test values('abc','Daya') insert into #Test values('def','Daya')
;WITH Emp AS (SELECT ROW_NUMBER ( ) OVER ( PARTITION BY EmpID, EmpName ORDER BY EmpID ) AS RNUM FROM #Test ) DELETE FROM Emp WHERE RNUM > 1 select * FROM #Test
Output EmpID EmpName abc Daya def Daya
|
|
|
|