In requirement we have table having single column, no primary key and foreign key applied on table. It is easier to delete the duplicate data from table if it having primary key applied using CTE or row_number. But if in table no primary key, delete using row_number window function will work cause it will delete all the records from table.
Alternate is
- we can create new temp table using select distinct Into
- delete all records from old table
- reinsert distinct record from temp table
- delete all records from old table
- reinsert distinct record from temp table
But in this case new table create and delete object not allowed to user.
SELECT * INTO SQL17 FROM ( SELECT 1 id UNION ALL SELECT 2 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 3 UNION ALL SELECT 3 UNION ALL SELECT 4 ) t DELETE FROM SQL17 WHERE %%physloc%% IN ( SELECT loc FROM ( SELECT %%physloc%% loc , * , row_number() OVER ( PARTITION BY id ORDER BY id ) rn FROM SQL17 ) t WHERE rn > 1 )
No comments:
Post a Comment