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

SQL中如何用单条语句按相同或不同条件更新多列数据?

两类更新场景都可以通过单条SQL语句实现,具体实现方式如下:

场景1:多列待替换值相同

可以直接使用标准SQL中的NULLIF函数简化写法,该函数会判断第一个参数和第二个参数是否相等,相等则返回NULL,否则返回第一个参数的值,天然适配同值替换的需求:

UPDATE table_name
SET
  col1 = NULLIF(col1, -99),
  col2 = NULLIF(col2, -99)
-- 加WHERE条件过滤无匹配值的行,避免全表扫描提升执行效率
WHERE col1 = -99 OR col2 = -99;

执行后原值不为-99的列会保留原有数据,不会被误修改。

场景2:各列更新条件不同

针对不同列有不同更新规则的场景,使用CASE WHEN语法为每列单独写判断逻辑即可:

UPDATE table_name
SET
  col1 = CASE WHEN col1 = -99 THEN NULL ELSE col1 END,
  col2 = CASE WHEN col2 = 5 THEN NULL ELSE col2 END
-- 同样加过滤条件,只更新存在符合规则的行
WHERE col1 = -99 OR col2 = 5;

以上两种写法都是标准SQL语法,兼容MySQL、PostgreSQL、Oracle、SQL Server等所有主流关系型数据库。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:36:03