根据 AS400 SQL 中的不同条件更新 SQL 中的相同字段

Posted

技术标签:

【中文标题】根据 AS400 SQL 中的不同条件更新 SQL 中的相同字段【英文标题】:Update same field in SQL based on different criteria in AS400 SQL 【发布时间】:2020-03-16 17:46:08 【问题描述】:

最近提出了一个问题,即是否可以根据 2 个不同的标准对文件中的同一字段执行更新。我们引入了一个在一天结束时运行 2 个不同 SQL 的步骤,因此最初的问题已经得到缓解。但是,就我自己对该主题的了解,我很好奇是否可以执行类似于以下的 SQL 语句?

UPDATE MYFILE 
SET FIELD1 = 'ABC' where FIELD2 = '123' and FIELD3 = '456',
SET FIELD1 = 'XYZ' where FIELD2 = '789' and FIELD3 = '123'

是否可以在一个语句中进行类似的操作,或者您是否必须像我们最终所做的那样将其分解为 2 个语句?

提前致谢!

【问题讨论】:

【参考方案1】:

您可以在update 语句中使用case 表达式:

update myfile
set field1 = case
    when field2 = '123' and field3 = '456' then 'abc'
    when field2 = '789' and field3 = '123' then 'xyz'
end
where 
    (field2 = '123' and field3 = '456')
    or (field2 = '789' and field3 = '123')

【讨论】:

哇,我永远不会想到那个。效果很好,谢谢!

以上是关于根据 AS400 SQL 中的不同条件更新 SQL 中的相同字段的主要内容,如果未能解决你的问题,请参考以下文章

使用 SQL 从 AS400 中提取数据的问题

如何有条件的更新sql 数据表中的列值?

根据输入参数对更新 sql 脚本进行条件处理

无法在 SQL 2019 Linux 上使用 PolyBase 通过 ODBC 查询 AS400

使用 IBM SQL 导航锁定文件创建的 AS400 DB2 视图正在使用

根据sql中的条件从不同的表中选择一个值