Update Switch语句影响整个表

时间:2019-02-28 10:00:16

标签: sql ms-access

MS Access SQL。我正在使用SWITCH执行Update SQL语句。

Update Insurance Set [SellPrice]=SWITCH 
([Cover]=50, 4.2, 
[Cover]=100, 5.4, 
[Cover]=200, 6.8)

语句中的3个字段已正确更新,但对于所有其他条目,它都将SellPrice列空白。该语句将更新所有行,而不仅仅是我确定的3行。

1 个答案:

答案 0 :(得分:0)

这是通常的行为。您的更新查询始终会影响所有行,如果不满足任何条件,switch语句将返回Null

您应该过滤要影响的行:

Update Insurance Set [SellPrice]=SWITCH 
([Cover]=50, 4.2, 
[Cover]=100, 5.4, 
[Cover]=200, 6.8)
WHERE Cover IN (50,100,200)

或者,如果不满足任何条件,则可以使SWITCH语句返回当前值:

Update Insurance Set [SellPrice]=SWITCH 
([Cover]=50, 4.2, 
[Cover]=100, 5.4, 
[Cover]=200, 6.8,
True, SellPrice)

但是,这可能会导致性能下降并导致更多的锁定。