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

如何用单条SQL语句批量更新多组code和id对应的flag字段

单条SQL实现多组合条件的批量更新

可以通过行值构造器结合IN子句实现单条SQL完成批量更新,这是标准SQL写法,PostgreSQL、Oracle、MySQL 8.0+等多数现代数据库都支持:

UPDATE my_table 
SET flag = 1 
WHERE (code, id) IN (
    ('ABC', 10000),
    ('DEF', 10001),
    ('GHI', 10002),
    ('ABC', 10001)
);

如果你的数据库版本不支持行值构造器(比如MySQL 5.x),可以用多个OR连接条件(注意给每个组合加括号,避免逻辑混乱):

UPDATE my_table 
SET flag = 1 
WHERE (code = 'ABC' AND id = 10000)
   OR (code = 'DEF' AND id = 10001)
   OR (code = 'GHI' AND id = 10002)
   OR (code = 'ABC' AND id = 10001);

要是需要更新的组合数量极多,还可以先把这些组合存入临时表,再通过关联更新实现:

-- 创建临时表并插入待更新的组合数据
CREATE TEMP TABLE temp_updates (code VARCHAR(10), id INT);
INSERT INTO temp_updates VALUES 
('ABC', 10000),
('DEF', 10001),
('GHI', 10002),
('ABC', 10001);

-- 关联原表完成更新
UPDATE my_table t
JOIN temp_updates tu ON t.code = tu.code AND t.id = tu.id
SET t.flag = 1;

注意:把示例中的my_table替换成你实际的数据表名,别用table这种SQL关键字当表名,会触发语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:02:01