Mysql查询数据生成排序序号

在排序好的sql外层嵌套上排序自增变量实现生成序号

两种方法
一、select @变量名
例如:
select (@i:= @i+1) as rank_no, //设置排序自增
a.*
from( 已排序好的sql ) a,
(select @i:=0) b //重置排序变量,否则每次查询序号都是累加,不是重新排序

二、set @变量名
例如:
set @i:=0;
select @i:[email protected]+1 as rank_no,
a.*
from( 已排序好的sql)a

Mysql查询数据生成排序序号

如果要根据分组求和后的排序,需要根据求和值来排序(和相等的序号也相等,则添加新参数)
例如:

set @i:=0,@rowtruckid:=null;
select
case when @rowtruckid = t.truckid then @i
when @rowtruckid := t.truckid then @i:[email protected]+1
end rank_no, t.*
from( 已排序好的sql )t
Mysql查询数据生成排序序号
rowtruckid初始值为null,每查询一行就把truckid赋值给rowtruckid(跟下一行比较用的)