how to delete duplicate rows using cte in sql code example

Example 1: sql delete duplicate

-- Oracle
DELETE films
WHERE rowid NOT IN (
    SELECT min(rowid)
    FROM films
    GROUP BY title, uk_release_date
);

Example 2: sql delete duplicate rows but keep one

# Step 1: Copy distinct values to temporary table
CREATE TEMPORARY TABLE tmp_user (
    SELECT id, name 
    FROM user
    GROUP BY name
);

# Step 2: Remove all rows from original table
DELETE FROM user;

# Step 3: Remove all rows from original table
INSERT INTO user (SELECT * FROM tmp_user);

# Step 4: Remove temporary table
DROP TABLE tmp_user;

Tags:

Misc Example