2010-05-29 78 views
94

如何在Postgres/SQL中找到兩個整數的最大值(或最小值)?其中一個整數不是列值。如何獲得Postgres/SQL中兩個整數的最小/最大值?

我舉一個例子場景:

我想從一列(在所有行)減去一個整數,但結果應不小於零。所以,首先,我有:

UPDATE my_table 
SET my_column = my_column - 10; 

但是,這可以使一些值爲負。我想(在僞代碼)是:

UPDATE my_table 
SET my_column = MAXIMUM(my_column - 10, 0); 

回答

176

看看GREATEST and LEAST

UPDATE my_table 
SET my_column = GREATEST(my_column - 10, 0); 
11

你想要的內聯SQL case

set my_column = case when my_column - 10 > 0 then my_column - 10 else 0 end 

max()是一個聚合函數,並得到最大的結果集的一排。

編輯:哎呀,不知道greatestleast在postgres。改爲使用它。

+7

如果僅限於標準SQL,此版本非常有用。 – 2013-03-11 23:35:24

相關問題