我正在尝试使用表达式更新一系列记录中的字段,该表达式将计算为可能为负数的整数。我希望列的下限为1;表达式求值小于1的任何行都应将其字段设置为1.最好用以下伪SQL语句对表示:
update posts set field = [expensive expression];
update posts set field = 1 where field < 1;
如何在单个SQL update
语句中实现此功能?在PostgreSQL中是否有一些等同于max(a, b)
,我可以传递给max([expression], 1)
?
答案 0 :(得分:6)
使用功能GREATEST
。
或者,更为一般的条件方法:
SELECT
CASE WHEN condition
THEN valueForTrue
ELSE valueForFalse
END
FROM ...
答案 1 :(得分:2)
是的,请使用GREATEST([expensive expr], 1)
答案 2 :(得分:1)