MYSQL显示排名的语句

第一种:使用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;

""'

给变量赋值:@变量名:=

判断变量是否相等:@变量名= 

""'

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。