mysql分数问题

2020-06-21  本文已影响0人  河神

1. 分数排名(mysql添加序号)

①   := 与 = 的区别
:=   赋值的意思。在set update select 中表示赋值的意思,用的比较少一般都用=,但是在用变量实现行号时(比如本文标题获取排列序号),一定要用:=。
 =   等于的意思,只有当set 和 update时,和:=的意思是一样的,表示赋值,其余情况都是等于的意思。
② 用户变量 @
@rank 是对一个叫rank的参数进行赋值。对用户变量赋值有两种方式,一种直接用"="另一种用":="。其区别在于使用set命令对用户变量赋值时,两种方式都可以使用;当使用select语句对用户变量进行赋值时,只能使用“:=”方式,因为在select语句中,“=”被看做是比较操作符。
image.png
SELECT score,
(SELECT s2.rank FROM 
        (SELECT score,@t:=@t+1 As rank FROM( 
                      select Score from Scores group by Score order by Score desc ) t1, 
            (SELECT @t:=0) t2) 
   s2 WHERE s2.score=s1.score)  as rank

FROM Scores s1 order by Score desc;
上一篇 下一篇

猜你喜欢

热点阅读