我试图将此解决方案应用于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)
Run Code Online (Sandbox Code Playgroud)
也尝试过分配别名 - 但没有成功.这个错误的原因是什么?它通常指出SQL脚本可以产生循环过程,但在这里我实际上没有看到任何与此相关的 - 很明显,两个选择for DELETE和for SELECT是分离的 - 引擎必须SELECT 首先执行一次然后在WHERE条件中使用它DELETE.那么 - 为什么会发生这种错误,我怎样才能实际删除我的表格?=)
ech*_*_Me 27
试试这可能对你有帮助
DELETE FROM NAME
WHERE NAME.id NOT IN (
SELECT * FROM (
SELECT MIN(id) FROM NAME GROUP BY col1,col2
) AS p
)
Run Code Online (Sandbox Code Playgroud)