2014-10-28 30 views
0

我的查询出了什么问题,它为什么不执行?使用NOT IN子查询进行更新时出错

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子句

+0

从子查询中再次选择或更好地使用JOIN。 – Mihai 2014-10-28 19:48:52

+0

我怎样才能使用连接? – BernardoLima 2014-10-28 19:52:14

回答

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

MySQL不会让你更新记录和使用子查询你正在尝试使用。

您可以将您的代码更改为此。

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