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

MySQL中指定列和为5时更新AP9表Pas列的问题

解决MySQL UPDATE语句的1093错误问题

你的SQL出现1093错误的原因是:MySQL不允许在UPDATE/DELETE操作的WHERE子句中,直接将目标表作为子查询的FROM表引用。另外你的原语句逻辑也不符合需求——用SUM()和HAVING是对全表的列值求和,而不是逐行判断单条记录的ColA到ColE之和是否为5。

正确写法(直接逐行判断)

最简洁的方式是直接在WHERE子句中计算每行的列和,不需要子查询:

UPDATE AP9 
SET Pas = 1 
WHERE (ColA + ColB + ColC + ColD + ColE) = 5;

复杂场景的替代写法(通过临时表规避限制)

如果后续有更复杂的逻辑需要用到子查询,可以给子查询套一层别名,让MySQL将其视为临时表,绕过目标表引用限制(假设表有唯一主键id):

UPDATE AP9 
SET Pas = 1 
WHERE EXISTS (
    SELECT 1 
    FROM (SELECT id, ColA+ColB+ColC+ColD+ColE AS total FROM AP9) AS temp_table
    WHERE temp_table.id = AP9.id AND temp_table.total = 5
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 01:44:54