我想从一组字段中获得最大的值但是其中一些可以是NULL,所以我不能使用GREATEST,我必须将NULL值转换为任意值(-1)案件)。但是在结果中,如果所有字段都为NULL,我仍然必须得到NULL值。
SELECT
CASE WHEN GREATEST(IFNULL(f1, -1), IFNULL(f2, -1)) = -1 THEN
NULL
ELSE
GREATEST(IFNULL(f1, -1), IFNULL(f2, -1))
END
我的问题是,我有两倍的最大值计算,所以我想知道是否有办法存储"该值使mySQL不必评估两次。
或者,如果有更好/更合适的方式来做我想要的事情。
感谢。
答案 0 :(得分:1)
您可以使用NULLIF
功能:
NULLIF(GREATEST(IFNULL(f1, -1), IFNULL(f2, -1)), -1)
如果相等则返回NULL
,否则返回第一个参数的值。
参考文献: