我试图将this解决方案应用于MySQL DB中具有重复项的表中的数据。我得到这样的错误:您无法在FROM子句中指定目标表'名称'进行更新
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
。 所以 - 为什么会发生这种错误,我怎么能真正重复删除我的表? =)
您的查询看起来与您尝试应用的解决方案的查询完全无关。他们使用连接,而您正在使用'NOT IN'。 – eggyal
@eggyal我的链接指向评论,而不是回答 –
啊,够公平的;我没有注意到这一点。该评论是特定于SQL Server的。你会发现答案中给出的连接将在MySQL中工作。 – eggyal