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

MySQL执行UPDATE更新3行数据仅1行受影响的问题求助

问题排查及修复方案

错误原因

你的SQL存在两个核心语法/逻辑错误,导致仅单行或无行被更新:

  • 第一处错误:WHERE 条件中ID匹配逻辑错误
    你写的 some_id = ('7791, 1555, 363201') 是将三个ID拼接为单个完整字符串进行匹配,只会命中 some_id 等于'7791, 1555, 363201'这一整个字符串的行,自然最多只能匹配到1行。正确写法是使用IN运算符,每个ID单独用引号包裹:some_id IN ('7791', '1555', '363201')
  • 第二处潜在问题:时间范围过滤限制
    你额外加了date_updated between '2021-11-01' and '2021-11-03'的过滤条件,需要确认你要更新的三行原始date_updated值全部落在这个时间区间内,否则不在区间内的行不会被命中更新。
  • 额外优化建议:CASE表达式建议加默认值
    目前的CASE逻辑如果匹配不到对应some_id,会将date_updated设置为NULL,建议添加ELSE date_updated避免误改非目标字段。

修正后的SQL语句

update some_table
set date_updated = case some_id
when '7791'   then '2021-10-08 06:59:05'
when '1555'   then '2021-08-26 05:30:54'
when '363201' then '2021-08-31 05:01:45'
else date_updated
end
where some_id IN ('7791', '1555', '363201') 
and date_updated between '2021-11-01' and '2021-11-03';

操作建议

执行更新前建议先运行同条件的SELECT语句确认命中行数是否符合预期,避免误操作:

SELECT * FROM some_table 
where some_id IN ('7791', '1555', '363201') 
and date_updated between '2021-11-01' and '2021-11-03';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:36:04