Mysql选择最大变量值

时间:2015-03-10 23:13:11

标签: mysql variables max

我有一个临时表和以下查询:

Select *,  @rnkma:=IF(age>17 and age<22,@rnkma+1,@rnkma),
          @rnkmb:=IF(age>21 and age<25,@rnkmb+1,@rnkmb),
          @rnkmc:=IF(age>24 and age<30,@rnkmc+1,@rnkmc),
          @rnkmd:=IF(age>29 and age<35,@rnkmd+1,@rnkmd),
          @rnkme:=IF(age>34 ,@rnkme+1,@rnkme)  from tmp_user where gender='M';

    Select @rnkma, @rnkmb, @rnkmc, @rnkmd ;

结果是:

@rnkma  @rnkmb  @rnkmc  @rnkmd
  5        8       3       4

我希望获得此结果的最大值,如:

@rnkmb
  8 

有什么建议吗?感谢。

2 个答案:

答案 0 :(得分:2)

尝试使用CASE和GREATEST():

SELECT 
CASE GREATEST(@rnkma, @rnkmb, @rnkmc, @rnkmd)
    WHEN @rnkma THEN '@rnkma'
    WHEN @rnkmb THEN '@rnkmb'
    WHEN @rnkmc THEN '@rnkmc'
    WHEN @rnkmd THEN '@rnkmd'
END name,
GREATEST(@rnkma, @rnkmb, @rnkmc, @rnkmd) value
(...)      

答案 1 :(得分:1)

@ Pawel的回答是正确的,我只会添加一件事作为参考。 Max()Greatest()

之间存在差异

MAX()返回表达式的最大值。例如:

select max(Age) from staff;

Greatest()返回exprs列表中最大的一个。必须提供多个列。

SELECT GREATEST(150,160,161) FROM XXX;  will return 161