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

如何合并多条UPDATE语句实现forum_topic_resume表多条件批量更新

单条语句合并多规则批量更新实现方案

直接使用MySQL原生的CASE WHEN条件判断语法即可实现按ID匹配多值更新,无需拆分多条独立UPDATE语句。核心逻辑是在SET子句中针对每个字段按ID规则分支赋值,同时通过WHERE子句严格限定更新范围,避免误操作全表数据。

可直接调整使用的SQL代码

UPDATE forum_topic_resume
SET
    -- 匹配规则更新更新时间字段
    _When_Updated = CASE
        WHEN _id IN (96250, 69081, 69555) THEN NOW() - INTERVAL 6 DAY
        WHEN _id IN (70494, 68612, 69564, 69660, 72437, 80498) THEN NOW() - INTERVAL 8 DAY
        ELSE _When_Updated
    END,
    -- 匹配规则更新_Status字段
    _Status = CASE
        WHEN _id IN (96250, 69081, 69555) THEN 1224
        ELSE _Status
    END,
    -- 匹配规则更新_Status_Is字段
    _Status_Is = CASE
        WHEN _id IN (70494, 68612, 69564) THEN 1228
        WHEN _id IN (69660, 72437, 80498) THEN 1229
        ELSE 1250
    END
WHERE
    -- 必须在此处写全所有待更新ID:已明确的9个ID + 剩余52个需要设置_Status_Is=1250的ID,禁止省略WHERE条件
    _id IN (
        96250, 69081, 69555,
        70494, 68612, 69564, 69660, 72437, 80498
        -- 补充剩余52个目标ID
    );

操作注意事项

  • 正式执行更新前,先替换为SELECT语句校验赋值逻辑是否符合预期,避免误改数据,校验语句参考:
SELECT 
    _id,
    _When_Updated AS old_when_updated,
    CASE
        WHEN _id IN (96250, 69081, 69555) THEN NOW() - INTERVAL 6 DAY
        WHEN _id IN (70494, 68612, 69564, 69660, 72437, 80498) THEN NOW() - INTERVAL 8 DAY
        ELSE _When_Updated
    END AS new_when_updated,
    _Status AS old_status,
    CASE
        WHEN _id IN (96250, 69081, 69555) THEN 1224
        ELSE _Status
    END AS new_status,
    _Status_Is AS old_status_is,
    CASE
        WHEN _id IN (70494, 68612, 69564) THEN 1228
        WHEN _id IN (69660, 72437, 80498) THEN 1229
        ELSE 1250
    END AS new_status_is
FROM forum_topic_resume
WHERE _id IN (
    -- 和UPDATE语句中的ID列表保持完全一致
    96250, 69081, 69555,
    70494, 68612, 69564, 69660, 72437, 80498
    -- 补充剩余52个目标ID
);
  • 禁止省略WHERE子句,否则会触发全表更新,导致非目标数据被篡改。
  • CASE语句中ELSE 原字段名的写法,是为了保证不在匹配规则内的字段值保留原有数据,不会被意外覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:57:18