如何在Postgres/SQL中获得两个整数的最小值/最大值?

HRJ*_*HRJ 132 postgresql

如何在Postgres/SQL中找到两个整数的最大值(或最小值)?其中一个整数不是列值.

我将给出一个示例场景:

我想从列中减去一个整数(在所有行中),但结果不应小于零.所以,首先,我有:

UPDATE my_table
SET my_column = my_column - 10;
Run Code Online (Sandbox Code Playgroud)

但这可能会使一些价值观变为负面.我想要的(伪代码)是:

UPDATE my_table
SET my_column = MAXIMUM(my_column - 10, 0);
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 257

看看GREATEST和LEAST.

UPDATE my_table
SET my_column = GREATEST(my_column - 10, 0);
Run Code Online (Sandbox Code Playgroud)


Don*_*nie 13

你想要内联sql case:

set my_column = case when my_column - 10 > 0 then my_column - 10 else 0 end
Run Code Online (Sandbox Code Playgroud)

max() 是一个聚合函数,它获取结果集的一行的最大值.

编辑:哎呀,不知道greatestleast在postgres.改用它.

  • 如果您仅限于标准SQL,则此版本很有用. (9认同)