The primary key: id, the unique columns: col_1, col_2, col_3 .
You can use a temporary table, like:
create temporary table temp_table (id int); insert temp_table (id) select id from your_table t1 where exists ( select * from your_table t2 where t2.col_1 = t1.col_1 and t2.col_2 = t1.col_2 and t2.col_3 = t1.col_3 and t2.id > t1.id ); delete from your_table where id in (select id from temp_table);
Or you can add a UNIQUE index on the 3 columns. When you write the
ALTER IGNORE TABLE your_table ADD UNIQUE INDEX idx_name (col_1, col_2, col_3);
This will drop all the duplicate rows. As an added benefit, future INSERTs that are duplicates will error out. And you’d better take a backup before running this statement.
Relative links:
Remove duplicate rows in SQL Server
Remove duplicate rows in Oracle
Some MySQL tools you can try: https://www.withdata.com/mysql/