Mysql select 最大变量值
Mysql select max variable value
我有一个临时的 table 和以下查询:
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
有什么建议吗?谢谢。
尝试使用 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
(...)
@Pawel 的回答是正确的,我只添加一个作为参考。
Max()
和 Greatest()
有区别
MAX()
returns 表达式的最大值。例如:
select max(Age) from staff;
Greatest()
returns 表达式列表中最大的一个。必须给出不止一列。
SELECT GREATEST(150,160,161) FROM XXX; will return 161
我有一个临时的 table 和以下查询:
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
有什么建议吗?谢谢。
尝试使用 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
(...)
@Pawel 的回答是正确的,我只添加一个作为参考。
Max()
和 Greatest()
MAX()
returns 表达式的最大值。例如:
select max(Age) from staff;
Greatest()
returns 表达式列表中最大的一个。必须给出不止一列。
SELECT GREATEST(150,160,161) FROM XXX; will return 161