mysql-您无法在FROM子句中指定目标表“ NAME”进行更新

我正在尝试将this解决方案应用于具有重复项的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脚本可以产生循环过程,但是在这里我实际上看不到任何相关信息-很明显,对于DELETE和SELECT的两个选择是分离的-引擎必须首先执行一次SELECT,然后在WHERE条件下使用它删除.
那么-为什么会发生此错误,以及如何真正对表进行重复数据删除呢? =)

最佳答案
试试这个可能对你有帮助

DELETE  FROM NAME
WHERE NAME.id NOT IN (
                     SELECT * FROM ( 
                                    SELECT MIN(id)  FROM NAME GROUP BY col1,col2
                                   ) AS p 
                      ) 

Read more

转载注明原文:mysql-您无法在FROM子句中指定目标表“ NAME”进行更新 - 代码日志