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语句中使用的管理器表和子查询中引用的管理器表。这消除了导致错误消息的混乱。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3