Mysql如果没有ELSE

时间:2018-12-01 15:05:31

标签: mysql

在SELECT中,我进行了一些计算(求和,最小值,ifnull,乘法和减法),其中涉及几个列(我们称其为someComplexCalc),并且如果结果小于0而不是我希望它变为0。 >

问题是由于性能下降,我不想重复someComplexCalc在一行中运行两次。我想要某种语句,该语句仅在结果小于0时才替换结果,否则将其保留,就像IFNULL(statement,0)的工作方式一样,没有THEN部分。

使用If语句,我不能这样做,也不能使用CASE

    
SELECT
  (IF someComplexCalc < 0, 0, someComplexCalc) AS result   #someComplexCal runs twice
  (IF someComplexCalc < 0, 0) AS result    #not working, than part is missing so it return NULL

2 个答案:

答案 0 :(得分:3)

使用greatest()函数而不是if()返回0或复杂计算中的较大者。

select greatest(complexcalc, 0) from yourtable

答案 1 :(得分:0)

带有用户定义的变量

SELECT if( (@x:=5*4*3*2*1)<0, 0, @x) x;