Delete Duplicate Rows SQL Server

1. Add an Identity Column to the Table

alter table MASTER
add identity_col int identity(1,1);

2. Delete duplicate data using Below Query (In the GROUP BY CLAUSE you can specify multiple columns if the row is indetified using more than one field)

delete from MASTER where identity_col not in ( select Min(identity_col) from MASTER group by trnx_uid);

Advertisements

Delete Large Number of Rows SQL Server

To delete rows without locking a table which has say more than  100 million rows to be deleted. Or a large table with archived data has to be deleted. You can use the below function to do this deletion.

 


DECLARE @Count INT
Declare @for_delete INT
Declare @chunk_size INT
SELECT @chunk_size=100000
SELECT @Count = 0
select @for_delete=count(*) from [Your big table] where [field name] > getdate () - 180

While (@Count < @for_delete)
BEGIN
SELECT @Count = @Count + @chunk_size
BEGIN TRAN
DELETE top(@chunk_size) FROM [Your big table] where [field name] > getdate () - 180

COMMIT TRAN
END

 

Remove Null Rows SQL Server

DELETE
FROM TABLENAME
WHERE
(COLUMN_NAME IS NULL OR COLUMN_NAME = 0);

If you have additional columns containing NULL values and you want to refine your delete criteria

DELETE
FROM TABLENAME
WHERE
(COLUMN_NAME IS NULL OR COLUMN_NAME = 0) AND
(COLUMN_NAME_1 IS NULL OR COLUMN_NAME_1 = 0) AND
(COLUMN_NAME_2 IS NULL OR COLUMN_NAME_2 = 0) ;