0
我想從一組字段中獲得最大值,但其中一些可以爲NULL,因此我無法像原樣那樣使用GREATEST,並且必須將NULL值轉換爲任意值( -1在這種情況下)。但是在結果中,如果所有字段都是NULL,我仍然必須獲得NULL值。使用CASE條件作爲結果值
SELECT
CASE WHEN GREATEST(IFNULL(f1, -1), IFNULL(f2, -1)) = -1 THEN
NULL
ELSE
GREATEST(IFNULL(f1, -1), IFNULL(f2, -1))
END
我的問題是,我有兩次最大價值的計算,所以我想知道是否有一種方法可以「儲存」的值,使MySQL沒有評估的兩倍。
或者如果有更好/更正確的方法來做我想做的事。
謝謝。
我認爲MySQL能夠告訴你計算兩次同樣的事情,它在內部存儲它。 – Barmar 2014-10-30 08:44:53
@Barmar:我會非常驚訝,如果是這樣的情況下,特別是要記住有沒有類似於'DECERMENISTIC'在oracle – zerkms 2014-10-30 08:47:13
@zerkms請參閱http://stackoverflow.com/questions/23824505/does- mysql-elimination-common-subexpressions-between-select-and-having-group-by-cl – Barmar 2014-10-30 08:48:08