我有一张桌子,如下所示:
id phy
0 0
1 8
当插入值大于现有值时,我需要更新phy。
我可以在单个查询中实现吗?
我尝试了以下方法:
UPDATE SET phy = CASE WHEN phy < newValue then newValue end where id = 0;
在这种情况下,它可以正常工作。如果newValue较小,则插入null。我不知道如何为
ELSE
案例设置值。然后,我认为我应该在表上使用自我联接,但是查询不正确。
最佳答案
采用:
CASE WHEN phy < newValue THEN newValue ELSE phy END
因此,如果
phy >= newValue
,则phy
字段保持不受影响。因此,
UPDATE
语句变为:UPDATE mytable
SET phy = CASE WHEN phy < newValue THEN newValue ELSE phy END
WHERE id = 0;