首页 > 解决方案 > Mysql IF THEN 没有 ELSE

问题描述

在 SELECT 中,我做了一些计算(求和、最小值、ifnull、乘法和减法),涉及几列(我们称之为 someComplexCalc),如果结果小于 0,我希望它变为 0。

问题是我不想重复 someComplexCalc 在一行中运行两次,因为性能损失。我想要某种语句,它只在结果小于 0 时才替换它,否则它会离开它,就像 IFNULL(statement,0) 的工作方式一样,它没有 THEN 部分。

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

    
选择
  (IF someComplexCalc < 0, 0, someComplexCalc) AS 结果 #someComplexCal 运行两次
  (IF someComplexCalc < 0, 0) AS 结果#not working, than part is missing 所以它返回NULL

标签: mysql

解决方案


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

select greatest(complexcalc, 0) from yourtable

推荐阅读