给SQL查询结果加序号
用SQL查询出结果后,想要在结果的每行前面加上序号怎么办?
这儿提供三种办法:
(例子中:
student为表名
stuid为student表中的字段
)
1、窗口函数:row_number()
-- 给查询后的结果加上序号
-- 方法一:row_number()
select row_number() over(order by a.stuid) `no`
,a.*
from
(select *
from student
) a
;
2、窗口函数:rank()
-- 方法二:rank()
select rank() over(order by a.stuid) `no`
,a.*
from
(select *
from student
) a
;
3:MySQL中不支持窗口函数时:
-- 方法三:MySQL中如果不支持窗口函数
select (@i:=@i+1) i
,a.*
from
(select *
from student
) a
,(@i:=0) i
;