You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同表更新时使用SELECT子查询抛出#1093错误求助

解决MySQL错误#1093:不能在FROM子句中指定更新的目标表

错误原因

MySQL的UPDATE/DELETE语句里,不允许在WHERE子句的子查询中直接引用正在被更新的目标表——引擎出于数据一致性校验的限制,会抛出这个错误。你的原语句中,work_info既是要更新的表,又在子查询里被直接引用,触发了这个限制。

解决方案1:嵌套子查询为临时表

把内层查询包装成临时表,让MySQL先计算出临时结果,再用该结果过滤要更新的数据,避开直接引用目标表的问题:

UPDATE work_info as info1
SET info1.status_id = 1
WHERE info1.info_id IN (
    SELECT info_id FROM (
        SELECT info2.info_id
        FROM work_info as info2
        WHERE info2.info_id IN (
            SELECT MAX(info3.info_id)
            FROM work_info as info3
            GROUP BY info3.user_license_id
        )
        AND info2.status_id = 5
    ) AS temp_table
);

解决方案2:改用JOIN语句(更高效)

用JOIN替代多层IN子查询,既能避开错误,通常查询性能也更优:

UPDATE work_info as info1
JOIN (
    SELECT MAX(info3.info_id) AS max_info_id
    FROM work_info as info3
    GROUP BY info3.user_license_id
) AS temp_max ON info1.info_id = temp_max.max_info_id
SET info1.status_id = 1
WHERE info1.status_id = 5;

内容的提问来源于stack exchange,提问作者deepu sankar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:30:38