第一种:使用case when判断
select X
case when 条件 then 返回值
else 返回值 end as Y, #也可以是两个或多个when语句省略else
#变量值更新
from 表名,(select 给变量赋初值)表名
order by ... desc/asc;
第二种:使用if( , , )语句判断
select X,
@变量名:=if(条件,条件成立返回值,条件不成立返回值) as Y,
#变量值更新
from 表名,(select 给变量赋初值)表名
order by ... desc/asc;
例如:按各科成绩进行排序,并显示排名, Score 重复时合并名次
第一种写法:
select Sid,Cid,Score, #分别表示学生id,课程id,课程分数
case when @sco=Score then@rank
else @rank:=@rank+1 end as rn,
@sco:=Score
from SC,(select @rank:=0,@sco:=null)t
order by Score desc;
第二种写法:
select Sid,Cid,Score,
@rank:= if(@sco=Score,@rank,@rank+1) as rn,
@sco:=Score
from SC,(select @rank:=0,@sco:=null)t
order by Score desc;
""'
给变量赋值:@变量名:=
判断变量是否相等:@变量名=
""'