Mysql 带条件的SQL max
以Mysql查询(sql脚本)格式编写以下条件的任何可能性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=最大值-值 如果
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);