小编典典

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

sql

我试图将此解决方案应用于我的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。那么-为什么会发生此错误,以及如何真正对表进行重复数据删除呢?=)


阅读 202

收藏
2021-04-07

共1个答案

小编典典

试试这个可能对你有帮助

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