Mysql 带条件的SQL max

Mysql 带条件的SQL max,mysql,Mysql,以Mysql查询(sql脚本)格式编写以下条件的任何可能性 val =100 max_val= select max(id) from tbl; dif =max_val - val if ( dif > 20) max_val=val+20 else if ( dif < 20) max_val=select max(id) from tbl; val=100 最大值=从tbl中选择最大值(id); dif=最大值-值 如果

以Mysql查询(sql脚本)格式编写以下条件的任何可能性

val =100    
max_val= select max(id) from tbl;    
dif =max_val - val    
if ( dif > 20)    
  max_val=val+20    
else if ( dif < 20)    
  max_val=select max(id) from tbl;
val=100
最大值=从tbl中选择最大值(id);
dif=最大值-值
如果(dif>20)
最大值=值+20
否则如果(dif<20)
最大值=从tbl中选择最大值(id);
简短回答: 长答覆:
当dif==20时,您希望发生什么?您使用了
您的else if-分支没有多大意义-您只是再次将相同的值赋给max\u val

对于第一部分,您可以使用case语句(我在Oracle中测试过,但根据MySQL文档,这在MySQL中也应该可以使用):


问候你,弗兰克首先,试着接受你其他问题的一些答案,如果你从不接受答案,你会被认为是一个忘恩负义的人。第二,你想达到什么目标?这似乎可以通过使用查询条件来实现。这些数字(100和20)是静态的还是可能会更改?您实际上需要使用最大值,而不是最大值:
从tbl中选择最大值(120,最大值(id))
SELECT GREATEST(120,max(id)) from tbl;
val =100    
max_val= select max(id) from tbl;    
dif =max_val - val
if ( dif > 20)    
  max_val=val+20    
else if ( dif < 20)    
  max_val=select max(id) from tbl;
max_val= select max(id) from tbl;    
if ( max_val > 120)    
  max_val=120    
SELECT GREATEST(120,max(id)) from tbl;
select maximum, difference, offset1, maximum + offset1 my_val from (
   select maximum, difference, 
   (case 
     when difference > 20 then 20
     else 0
    end  ) offset1 from (
     select max(id) maximum, max(id) - 100 difference from tbl) v1);