MS Access SQL IIF 如果为假则 return 旧值

MS Access SQL IIF if false then return old value

我有一个问题,我正在执行更新查询并在此过程中使用 IIF 函数:

Update someTable as tab Set tab.[field1] = "new filed1 value", tab.[field2] = IIF
(
tab[field2] = "some value" , "New value",IIF
(
tab.[field2] = tab.[field2],tab.[field2]))

)) Where tab.[field1] = "Old field 1 value"

对于上面的查询,如果它等于 "some value",我想将 field2 更改为 "New Value",但如果不等于,那么我不想更改它(或输入相同的值就像上面一样)

所以我的问题是上面查询中的下面一行是否会按预期工作?

IIF
    (
    tab.[field2] = tab.[field2],tab.[field2]
)

我觉得这个表达太复杂了。这就是你想要的:

Update someTable as tab
    Set tab.[field1] = "new filed1 value",
        tab.[field2] = IIF(tab.[field2] = "some value", tab.[field2])
    Where tab.[field1] = "Old field 1 value";