我试图将此解决方案应用于我的MySQL DB中具有重复项的表中的数据。我得到这样的错误:
SQL Error [1093] [HY000]: You can't specify target table 'NAME' for update in FROM clause DELETE NAME FROM NAME WHERE NAME.id NOT IN (SELECT MIN(id) FROM NAME GROUP BY col1, col2)
也尝试过分配别名-但没有成功。出现此错误的原因是什么?通常指出SQL脚本可以产生循环过程,但是在这里我实际上看不到与此相关的任何东西- 很明显,forDELETE和for的两个选择SELECT是分离的-engine必须先做SELECT 一次,然后在WHEREfor的条件下使用它DELETE。那么-为什么会发生此错误,以及如何真正对表进行重复数据删除呢?=)
DELETE
SELECT
WHERE
试试这个可能对你有帮助
DELETE FROM NAME WHERE NAME.id NOT IN ( SELECT * FROM ( SELECT MIN(id) FROM NAME GROUP BY col1,col2 ) AS p )