MySQL 错误 1093:无法在 FROM 子句中指定目标表
当尝试对引用中引用的表执行更新查询时FROM子句,你可能会遇到MySQL错误1093。这是因为MySQL禁止修改直接参与选择的表过程。
一种替代方法是将表与其自身连接。通过为表创建别名,您可以多次从中选择并修改原始表,而不会出现错误:
UPDATE tbl AS a INNER JOIN tbl AS b ON a.id = b.id SET a.col = b.col
另一个解决方案是将子查询更深地嵌套在FROM子句中:
UPDATE tbl SET col = ( SELECT ... FROM (SELECT.... FROM) AS x);
此解决方法从子查询创建隐式临时表,允许更新而不会出现错误。但是,这种方法可能会对性能产生影响。
需要注意的是,在 MySQL 5.7.6 及更高版本中,优化器可能会优化子查询,从而导致相同的错误。如果您遇到这种情况,请考虑暂时禁用优化:
SET optimizer_switch = 'derived_merge=off';
以上是如何解决MySQL错误1093:无法在FROM子句中指定目标表?的详细内容。更多信息请关注PHP中文网其他相关文章!