使用CASE条件作为结果值

时间:2014-10-30 08:42:47

标签: mysql sql

我想从一组字段中获得最大的值但是其中一些可以是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不必评估两次。

或者,如果有更好/更合适的方式来做我想要的事情。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用NULLIF功能:

NULLIF(GREATEST(IFNULL(f1, -1), IFNULL(f2, -1)), -1)

如果相等则返回NULL,否则返回第一个参数的值。

参考文献:

相关问题