Quantcast
Channel: Welcome To TechBrothersIT
Viewing all articles
Browse latest Browse all 1946

TSQL - How To Delete All Duplicate Records From a SQL Server Table

$
0
0
Here are couple of ways to delete duplicate records from a SQL Server table.

--Prepare Sample Data
USE TestDB
CREATE TABLE dbo.Customer( ID INT, FirstName VARCHAR(100),LastName VARCHAR(100),Age INT)
GO
INSERT INTO dbo.Customer 
VALUES(1,'Aamir','Shahzad',34)
,(
1,'Aamir','Shahzad',34)
,(
2,'Raza','M',32)
,(
3,'Sukhjeet','Singh',27)
,(
4,'Sukhjeet','Singh',28)

Delete all duplicate records by using Common Table Expressions(CTE):

;WITH CTE
            
AS (
    
SELECT FirstName,
                
LastName,
                
Row_number()
                
OVER (
                    
PARTITION BY FirstName, LastName
            
ORDER BY (
            
SELECT 1) ) AS Rn
        
FROM   dbo.Customer)
      
DELETE FROM
      
CTE WHERE EXISTS (SELECT 1 FROM cte t WHERE t.FirstName=cte.FirstName 
AND t.LastName=cte.LastName AND rn>1)

Delete all duplicate records by using Group By and Left Join:

DELETE FROM C
  
FROM dbo.Customer C
        
LEFT JOIN
    
(
  
SELECT FirstName,
            
LastName,
            
COUNT(*) AS RecordCnt
    
FROM   dbo.Customer
    
GROUP  BY FirstName,
            
LastName
    
HAVING COUNT(*) > 1) DR
  
ON DR.FirstName=C.FirstName
  
AND DR.LastName=C.LastName
  
WHERE DR.FirstName IS NOT NULL
   AND
DR.LastName IS NOT NULL

Viewing all articles
Browse latest Browse all 1946

Trending Articles