@i
为变量声明方式
:=
为变量赋值方式(set赋值时也可以使用=,但使用select只能使用:=)
(SELECT @i:=0)
number是为了每次查询都使变量从0开始(序号从1开始),使变量归零重置,若不加则下次查询的序号会在本次查询的基础上累加
number
是(SELECT @i:=0)
的别名
注意:(SELECT @i:=0) 一定要写select!!!
语法:
select (@i:=@i+1) number
,a.*
from
table as a
,(SELECT @i:=0) number
**示例: 查询学生平均成绩及其名次 **
-- 查询学生平均成绩及其名次
select (@i:=@i+1) number
,a.*
from
(SELECT a.s_name,AVG(b.s_score) as avgScore FROM student a
LEFT JOIN score b ON a.s_id = b.s_id
GROUP BY a.s_id ORDER BY avgScore DESC) a
,(SELECT @i:=0) number