[err] 1093 - you can't specify target table 'document' for update in from cl
时间: 2023-05-03 10:02:54 浏览: 182
在MySQL中,如果我们想更新一张表的一些数据时,可以使用update语句。然而,当我们使用update语句时,有一个限制条件:我们不能在更新语句中直接从查询语句中引用要更新的表,否则会出现错误1093 - you can't specify target table 'document' for update in from clause。
这个错误的原因是MySQL不允许我们更新正在查询中使用的表,因为更新将导致表锁定,而查询正在使用表并需要访问表的锁定。因此,MySQL不允许我们在更新语句中直接从查询语句中引用要更新的表。
为了解决这个问题,我们需要使用子查询来选择要更新的行,然后通过子查询结果的别名来更新目标表。例如:
UPDATE document SET status = 'approved' WHERE id IN (SELECT id FROM (SELECT id FROM document WHERE owner_id = 1) AS d);
在此解决方案中,我们使用子查询来选择所有文档所有者ID为1的文档的ID。然后使用子查询结果的别名“d”来更新目标表中的所有这些ID对应的“status”列。
总之,在使用MySQL的update语句时,我们需要注意不能直接从查询语句中引用目标表,必须使用子查询并使用别名来更新目标表。
阅读全文