数据库按字段排序并更新的sql语句

chencliff 发布于 2013/07/30 18:00
阅读 1K+
收藏 0

偶然看到的一个需求:

很简单的一个表,大约几十万行,列就一个id(学号),一个score(成绩)

现在要加一列rank(排名),要按照score得到排名并更新到数据库中

怎么想都很麻烦,对这种需要有没有好的思路?

加载中
0
mark35
mark35
如果是按照score来计算那rank字段就可以动态输出嘛
0
亭舸翁
亭舸翁
可以分两步,第一步,把rank 设置成按分数倒序的rowid,第二步,把相同分数的设成最小的一个rank
0
chencliff
chencliff

引用来自“亭舸翁”的答案

可以分两步,第一步,把rank 设置成按分数倒序的rowid,第二步,把相同分数的设成最小的一个rank
rowid是oracle的吧,这个是mysql的数据库
0
我已经报警了
我已经报警了
新建一个stu_rank的表,然后查完了再存进去呗。要是更新的话,就在备份之后截断表,然后再插一次。放到半夜运行就行了,不用担心负载
0
王瑞平
王瑞平

成绩不改了好说

动态排名你就摊上大事了

0
亭舸翁
亭舸翁

引用来自“chencliff”的答案

引用来自“亭舸翁”的答案

可以分两步,第一步,把rank 设置成按分数倒序的rowid,第二步,把相同分数的设成最小的一个rank
rowid是oracle的吧,这个是mysql的数据库
mysql应该有类似rowid的解决办法。 http://stackoverflow.com/questions/2728413/equivalent-of-oracles-rowid-in-mysql,手头没有mysql,不能验证时候可行
0
猫哥-u
猫哥-u
按行号是不行的,分数相同应该是同样的名次
返回顶部
顶部