sqlserver 排序问题

来源:百度知道 编辑:UC知道 时间:2024/05/20 15:06:49
举个例子:
有sqlserver数据库,成绩表中两个字段:成绩和位次,成绩数据已经有了.我想根据成绩高低把位次更新在"位次"字段.
我是用asp再操作数据库,这样做的

sSql = "SELECT * FROM 成绩表 order by 成绩 desc"
oRs.Open sSql, oConn, 1, 3
If Not oRs.Eof Then
Do While Not oRs.Eof
n=n+1
oRs("位次")=n
oRs.Update
oRs.MoveNext
Loop
end if

这样的代码如果是 mdb数据库 + asp 是可以完成的
但是问题就在于目前用 sqlserver
结果是:"当前记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制。"

我的问题3个

1.如果非要这样做该怎么办?
2.mdb+asp 与 sqlserver+asp 在代码上有不同?
3.有没有其它的办法把位次更新到表中?另外:同位次问题怎样解决?比如第2名第3名成绩一样就2个第2名,第3名空缺,接下来是第4名.

我需要的是 sqlserver + asp 的解决方案
非常感谢!
如果把 "SELECT * FROM 成绩表 order by 成绩 desc"
改成 "SELECT * FROM 成绩表"
在asp+sqlserver中就没问题

但如果是mdb+asp前者也没问题,问题在排序?
可不可以用一个查询直接产生这样的排序序列
或者用一个查询直接返回结果就是某个成绩在整个数据表中的位次?
当然,还是要 asp + sqlserver

急用,拜托各位大侠!

感谢 WHITE_WIN
再问一下:<

sSql = "SELECT * FROM 成绩表 order by 成绩 desc"
直接改成:
sSql = "update 成绩表 set 位次=(select count(1) from 成绩表 b where b.成绩<成绩表.成绩)+1"
就完成了您的所有任务!您一试便知有多爽
==========================

update 成绩表 set 位次=(select count(1) from 成绩表 b where b.成绩<成绩表.成绩 and 班级='200901')+1 where 班级='200901'
这样是只对一个班单独排序