使用NOT IN子查询进行更新时出错

时间:2014-10-28 19:42:21

标签: mysql

我的查询有什么问题,为什么不会执行?

UPDATE mbdb.pessoa
SET status = 4
WHERE id_pessoa NOT IN
    (SELECT id_pessoa
     FROM mbdb.pessoa mp
     INNER JOIN mbdb.funcionario mf ON mp.cpf = mf.cpf)

错误代码:
您无法指定目标表' pessoa'用于FROM子句中的更新

2 个答案:

答案 0 :(得分:1)

UPDATE mbdb.pessoa mp
LEFT JOIN mbdb.funcionario mf 
ON mp.cpf = mf.cpf
SET status = 4
WHERE funcionario.cpf IS NULL

答案 1 :(得分:1)

MySQL不允许您更新记录并使用您尝试使用的子查询。

您可以将代码更改为此。

UPDATE mbdb.pessoa m
SET m.status = 4
WHERE NOT EXISTS (SELECT 1 FROM mbdb.pessoa WHERE id_pessoa= m.id_pessoa)