1. 分数排名(mysql添加序号)
- 使用@xx 可以设置一个变量,然后在from后天添加selelct @xx:=1 赋值
① := 与 = 的区别
:= 赋值的意思。在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;
-
网友评论