:= 与 = 的区别:
1 。 “ := ” 赋值的意思 。 set 和 update 时, 但是一般都用 “ = ” 。 select 时 只能使用“ := ”方式
2.。“ = ” set 和 update时 ,表示赋值。select 时 , 表示是判断。
-- @i 是对一个叫 i 的参数进行赋值。
-- 按分数进行排序,并显示排名
set @i = 0;
select
student_id as 学生id,
score as 分数,
@i := @i + 1 as 排名序号
from tb_score order by score
-- 按分数进行排序,并显示排名, Score重复时合并名次
-- 变量i(序号) 和 变量sco(分数)
-- 方法一:
set @i = 0;
set @sco = null;
select
student_id,
score,
case when @sco = score then @i
when @sco := score then @i := @i + 1 end as 排名序号
from tb_score ORDER BY score desc
-- 方法二:
set @i = 0;
set @sco = null;
select
student_id,
score,
case when @sco = score then @i else @i := @i + 1 end as 排名序号,
@sco := score
from tb_score where course_id = 1 ORDER BY score desc
-- 按分数进行排序,并显示排名,Score 重复时保留名次空缺
set @i = 0;
set @sco = null;
select
student_id,
score,
case when @sco = score then '' else @i := @i + 1 end as 排名序号,
@sco := score
from tb_score where course_id = 1 ORDER BY score desc