如何从MySQL表中删除重复的行

gig*_*sey 6 mysql duplicates

我有一张MySQL桌子:

ID, Col1, Col2, Col3, Col4, etc...
Run Code Online (Sandbox Code Playgroud)

ID是一个primary key并且自表创建以来一直在工作.

我想要做的是删除所有其他列完全相同的所有记录.

Chr*_*sto 13

DELETE DupRows.*
FROM MyTable AS DupRows
   INNER JOIN (
      SELECT MIN(ID) AS minId, col1, col2
      FROM MyTable
      GROUP BY col1, col2
      HAVING COUNT(*) > 1
   ) AS SaveRows ON SaveRows.col1 = DupRows.col1 AND SaveRows.col2 = DupRows.col2
      AND SaveRows.minId <> DupRows.ID;
Run Code Online (Sandbox Code Playgroud)

当然,您必须将所有三个位置的col1,col2扩展到所有列.

编辑:我刚从我保留并重新测试的脚本中取出它,它在MySQL中执行.