MySQL 错误:在 UPDATE 和源中指定了两次表
当尝试使用提供的 SQL 查询更新管理器表时,MySQL 遇到错误:“表‘m1’被指定两次,既作为‘UPDATE’的目标,又作为单独的数据源。”出现此错误的原因是子查询中两次引用了表管理器。
可以通过修改子查询以从派生表中进行选择来解决该问题。该查询不应直接使用别名 m2,而是应使用 SELECT 语句创建一个临时表,然后从该临时表中进行选择。下面修改后的查询实现了这一点:
UPDATE manager SET status = 'Y' WHERE branch_id IN ( SELECT branch_id FROM (SELECT * FROM manager) AS m2 WHERE (branch_id, year) IN ( SELECT branch_id, year FROM branch_master WHERE type = 'finance' ) );
通过使用派生表,MySQL 可以正确区分 UPDATE 语句中使用的管理器表和子查询中引用的管理器表。这消除了导致错误消息的混乱。
以上是为什么使用子查询更新表时 MySQL 会抛出“Table Specified Twice”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!