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行。
答案 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)
但是,这可能会导致性能下降并导致更多的锁定。