sql - 是否有更好的方法来更新 sql 中表的多个列
问题描述
有一个更好的方法吗?
我必须update multiple columns
如下表:
UPDATE tableA
SET column1= '1234' WHERE column1 is NOT NULL;
UPDATE tableA
SET column2= '1234' WHERE column2 is NOT NULL;
UPDATE tableA
SET column3= '1234' WHERE column3 IS NOT NULL OR column3<>'0000';
解决方案
我认为您的最后一个条件应该是column3 IS NOT NULL AND column3 <> '0000'
. OR
不包括第二个条件。
所以我想你想要:
UPDATE tableA
SET column1 = (CASE WHEN column1 IS NOT NULL THEN '1234' END),
column2 = (CASE WHEN column2 IS NOT NULL THEN '1234' END),
column3 = (CASE WHEN column3 IS NOT NULL AND column3 <> '0000' THEN '1234' END)
WHERE (column1 IS NOT NULL) OR
(column2 IS NOT NULL) OR
(column3 IS NOT NULL AND column3 <> '0000');
该WHERE
子句不影响结果集。它只是为了限制正在更新的行数。
推荐阅读
- ansible - 在 run_once=true 的任务中委派给 localhost 时,是否可以更改显示的主机名?
- sql - 如何在标志为0时获取最后一行值并在pyspark数据帧中的标志1时将当前行值获取到新列
- sql-server - 如果用户具有“拒绝视图定义”,则 SQL Server 从链接服务器中选择会引发错误
- java - 如何根据映射替换映射中的键
- multithreading - 为什么多线程写入 Vec
> 使用原始指针段错误? - javascript - 使用 Moment js 对充满 ISO 日期的数组进行排序
- react-native - 谷歌云存储反应原生
- office-js - REST 调用后 Office js 更新 UI
- json - 在 OCaml 中导入和解析日历
- amazon-web-services - AWS 上的自动扩展组耗尽内部 IP