mysql delete duplicate rows keep one code example

Example 1: mysql remove duplicates

DELETE FROM table_name WHERE id 
       NOT IN ( SELECT id FROM table_name 
                   GROUP BY field_1, field_2)

Example 2: mysql delete duplicate rows

DELETE FROM table_name 
WHERE 
	id IN (
	SELECT 
		id 
	FROM (
		SELECT 
			id,
			ROW_NUMBER() OVER (
				PARTITION BY field_1
				ORDER BY field_1) AS row_num
		FROM 
			table_name
		
	) t
    WHERE row_num > 1
);

Example 3: mysql delete duplicate rows except one

DELETE FROM NAMES
 WHERE id NOT IN (SELECT * 
                    FROM (SELECT MIN(n.id)
                            FROM NAMES n
                        GROUP BY n.name) x)

Example 4: 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:

Sql Example