--Using CTE
(common table expression)
CREATE TABLE REM_DUP_DATA(ID
INT,NAME VARCHAR(10))
INSERT INTO REM_DUP_DATA VALUES
(1,'FIRST'),(1,'FIRST'),(1,'FIRST'),
(2,'SECOND'),(2,'SECOND'),
(3,'THIRD')
SELECT * FROM REM_DUP_DATA
Output:
ID          NAME
-----------
----------
1           FIRST
1           FIRST
1           FIRST
2           SECOND
2           SECOND
3           THIRD
WITH CTE (ID,NAME,DuplicateCount)
AS
(
SELECT ID,NAME,ROW_NUMBER() OVER(PARTITION BY ID,NAME ORDER BY ID,NAME) AS DuplicateCount
FROM
REM_DUP_DATA
)
DELETE
FROM CTE
WHERE
DuplicateCount > 1
SELECT * FROM REM_DUP_DATA
Result:
ID          NAME
-----------
----------
1           FIRST
2           SECOND
3           THIRD
--Alternate
method
--insert
distinct records into a temporary table
SELECT DISTINCT * INTO REM_DUP_DATA_TMP
FROM
REM_DUP_DATA
SELECT * FROM
REM_DUP_DATA_TMP
Output:
ID          NAME
-----------
----------
1           FIRST
2           SECOND
3           THIRD
--truncate your
main table
TRUNCATE TABLE REM_DUP_DATA
--after truncate
re-insert records from REM_DUP_DATA_TMP
INSERT INTO REM_DUP_DATA
SELECT * FROM
REM_DUP_DATA_TMP
SELECT * FROM REM_DUP_DATA
Result
ID          NAME
----------- ----------
1           FIRST
2           SECOND
3          
THIRD
No comments:
Post a Comment