2016-11-16 25 views
0

我有一個問題我做一個更新的查詢和使用的過程中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] 
) 

回答

1

我覺得表達式太複雜了。這是你想要的:

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)中返回該字段的值 –