Monday, August 9, 2010

Delete Duplicate Rows From Table

--Create Table
create table #temptable
(
ID int,
col1 int,
col2 int,
col3 int
)
--Insert values into temp table
insert into #tempTable values (1,1,2,3)
insert into #tempTable values (1,1,2,3)
insert into #tempTable values (1,1,2,3)
insert into #tempTable values (1,1,2,3)
select * from #tempTable
--proc to delete duplicate rows
create PROCEDURE [dbo].[REMOVE_DUP]
AS
BEGIN
DECLARE @ROW_CNT INT
SET ROWCOUNT 0
SELECT @ROW_CNT=1
WHILE @ROW_CNT>0
BEGIN
SELECT ID FROM #tempTable GROUP BY ID HAVING COUNT(*)>1
SELECT @ROW_CNT=@@ROWCOUNT
SET ROWCOUNT 1
DELETE FROM #tempTable WHERE ID IN(
SELECT id FROM #tempTable GROUP BY ID HAVING COUNT(*)>1
SET ROWCOUNT 0
END
SET ROWCOUNT 0
END
--Execute stored procedure
exec [REMOVE_DUP]