How do I do a DELETE in MySQL with NOT IN?

时间:2015-12-04 21:19:11

标签: mysql

I'm getting this error when running the code:

Error Code: 1093. You can't specify target table 'details' for update in FROM clause

DELETE FROM details WHERE detail NOT IN 
(
    SELECT detail 
    FROM user_details
    JOIN data ON user_details.data_iddata = data.iddata
    JOIN details ON details.iddetails = data.details_iddetails
)

What am I doing wrong here?

2 个答案:

答案 0 :(得分:0)

我没有系统方便,但我认为问题是您可以在子查询中引用与要删除的主要表相同的表。即它不像子查询中的JOIN details ON details.iddetails = data.details_iddetails,因为它在主选择子句中。

一种解决方法是创建一个临时表,将您感兴趣的记录插入其中,然后从该联接中找到您的集合。

答案 1 :(得分:0)

你正试图从表格中删除>你正在从中做一个SELECT。

为了使其工作,请从SELECT查询中创建一个列表,并将其结果放在括号中。

如果您不是在外部脚本中执行此操作,则应定义一个视图,以便为您提供所需的SELECT输出。