MS访问SQL IIF如果为假,则返回旧值

MS访问SQL IIF如果为假,则返回旧值

问题描述:

我有一个问题我做一个更新的查询和使用的过程中IIF功能:MS访问SQL 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" 

通过上述查询我wanto改变域2为“新价值“,如果它等于”一些价值“,但如果它不,那么我不想改变它(或把它放在与上述相同的价值)

所以我的问题是下面在上述查询行按预期工作?

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"; 
+0

所以如果我把tab。[field2]作为参数,无论单行函数它返回字段的当前值?我现在不能检查:(如果是这样的话,那是我正在寻找的答案:)谢谢 –

+0

@RobertMazurowski。 。 。是。简写是右侧的数值来自* old *记录,而来自* new *记录的数据则来自左侧。 –

+0

我觉得你误解了我,我的意思是表格。[字段]本身在单行函数(如IIF)中返回该字段的值 –