Mysql 使用“不在子查询中”更新时出错

Mysql 使用“不在子查询中”更新时出错,mysql,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) 错误代码:您不能在FROM子句中指定更新的目标表“pessoa”MySQL将不允许您更新记录并使用您尝试使用的子查询 UPDATE mbdb.

我的查询出了什么问题,为什么不执行

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)

错误代码:
您不能在FROM子句中指定更新的目标表“pessoa”

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

UPDATE mbdb.pessoa mp
LEFT JOIN mbdb.funcionario mf 
ON mp.cpf = mf.cpf
SET status = 4
WHERE funcionario.cpf IS NULL
您可以将代码更改为此

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

再次从子查询中选择,或者最好使用联接。如何使用联接进行选择?