我必须更新MySQL数据库中的表中的多个行,其中查找要更新的行的条件位于同一个表中。如何在FROM子句中的MySQL中的UPDATE查询中使用子查询
例如,我有一个名为“cdrs”的表。表中有一列叫做“tf”,这是我必须更新的那一列。 具有更新或不更新行的条件是“calltype”。 “recordId”是该表的关键。 我使用的查询,这是一个:
UPDATE cdrs
SET tf = 1
WHERE recordId in (SELECT recordId from cdrs WHERE calltype = 11);
但与此查询,我得到以下错误:
Error Code: 1093. You can't specify target table 'cdrs' for update in FROM clause.
我搜索这里,说实话,发现很多帖子在这个问题上但是当所有表都在SET子句中时,它们都处理这个问题,而不是WHERE。 例如,我发现这个职位: MySQL Error 1093 - Can't specify target table for update in FROM clause
我试图用这个想法,但没有成功。
有没有人有同样的问题,并找到了解决办法? 我很感谢解决这个问题的任何帮助。
非常感谢你, 若昂·保罗
是不是很简单了很多做'UPDATE的CDR SET TF = 1,其中CALLTYPE = 11'? – apokryfos
嗨@apokryfos, 是的,这是真的!我坚持这个想法,即必须使用主键进行更新,但使用calltype,从逻辑上讲是合理的。 非常感谢! –