比如有这样一个查询数据的语句:
select roleName,roleId from role order by roleAge;我现在想要给查询出的每一行上加一个序号,也就是说像这样一样:
index roleName roleId
1 a 11
2 b 12
3 c 13 等等
请问,我怎样在不在表role里增加字段的情况下,只用select语句就解决这个问题,求解答!!
[code="sql"]
SELECT (@rowNO := @rowNo+1) AS rowno,fname,fage,fsalary FROM (
SELECT fname,fage,fsalary FROM t_employee ORDER BY fsalary
) a ,( (SELECT @rowNo:=0) ) b;
;
[/code]
打印结果:
[table]
rowno fname fage fsalary
1 Stone 22 1200.00
2 Jane 23 2200.88
3 Jerry 28 2300.80
4 \N 27 2800.00
5 Smith 28 3900.00
6 John 23 5000.00
7 Tina 25 5200.36
8 Kerry 28 6200.00
9 Tom 25 8300.00[/table]
[b]注意如果用到排序,此时你必须先进行排序,把排序后的结果集作为一个续表,再次进行添加序号。[/b]
通过适当修改,可以满足分页处理。
[code="sql"]
SELECT (@rowNO := @rowNo+1) AS rowno,fname,fage,fsalary FROM (
SELECT fname,fage,fsalary FROM t_employee ORDER BY fsalary
) a ,( (SELECT @rowNo:=0) ) b LIMIT 0,5;[/code]
打印结果:
[table]
rowno fname fage fsalary
1 Stone 22 1200.00
2 Jane 23 2200.88
3 Jerry 28 2300.80
4 \N 27 2800.00
5 Smith 28 3900.00
[/table]
[code="java"]
Select (@rowNum:=@rowNum+1) as index,roleName,roleId
From a,(Select (@rowNum :=0) ) b
[/code]
[quote]这个在有orderby的时候好像不行啊,得到的index会很大,不是想要的1,2,3,...啊~ [/quote]不会吧,这么邪门啊