我有一张桌子,如下所示:

  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;

07-24 19:40