把查询的名次直接修改到字段里面

爱蹄子的羊头 2014-08-13 06:12:15
有一个表 里面很多数据(上万条), 我每一周要执行一次作业,获得某人的排名并记录下来方便后面开搞

姓名 分数 名次

CrazyFor      96840      null
DBA_Huangzj     196706     null
dawugui       432604     null
fredrickhu     296832     null
Haiwer       105563     null
happyflystone    138420     null
htl258       125853     null
josy        95658      null
liangCK       115245     null
libin_ftsafe    260840     null
paoluo       106146     null
pengdali      374373     null
qianjin036a     111430     null
roy_88       140446     null
txlicenhe      102159     null
wufeng4552     121166     null
zjcxc        878276     null

然后我要按分数进行一次排序, 并且把排序后的名次插入到[名次] 字段中, 变成这样

姓名 分数 名次

CrazyFor      96840      16 
DBA_Huangzj     196706     6  
dawugui       432604     2  
fredrickhu     296832     4  
Haiwer       105563     14  
happyflystone    138420     8  
htl258       125853     9  
josy        95658      17  
liangCK       115245     11  
libin_ftsafe    260840     5 
paoluo       106146     13 
pengdali      374373     3  
qianjin036a     111430     12  
roy_88       140446     7  
txlicenhe      102159     15  
wufeng4552     121166     10  
zjcxc        878276     1 

...全文
180 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxfvba 2014-08-14
  • 打赏
  • 举报
回复
哈哈,刚才没注意,原来全是大神级的人物排名
爱蹄子的羊头 2014-08-14
  • 打赏
  • 举报
回复
引用 4 楼 fredrickhu 的回复:
我是来看我的名字在上面的。楼主这是要做什么?
直接代码来源于生活, 比较容易吸引大牛前来解答
霜寒月冷 2014-08-13
  • 打赏
  • 举报
回复
update TB1 set ranking =b.rn
 from 
 (select *,ROW_NUMBER() over ( order by score desc) as rn  from TB1) b

 where  TB1.name=b.name and TB1.score=b.score
 go
 select * from TB1
 
-- name	score	ranking
--CrazyFor	96840	16
--DBA_Huangzj	196706	6
--dawugui	432604	2
--fredrickhu	296832	4
--Haiwer	105563	14
--happyflystone	138420	8
--htl258	125853	9
--josy	95658	17
--liangCK	115245	11
--libin_ftsafe	260840	5
--paoluo	106146	13
--pengdali	374373	3
--qianjin036a	111430	12
--roy_88	140446	7
--txlicenhe	102159	15
--wufeng4552	121166	10
--zjcxc	878276	1
--小F-- 2014-08-13
  • 打赏
  • 举报
回复
我是来看我的名字在上面的。楼主这是要做什么?
reenjie 2014-08-13
  • 打赏
  • 举报
回复

update tb1 set ranking=a.tempRanking from (
select *,ROW_NUMBER() over(order by score desc) as tempRanking from tb1 
) a where tb1.name=a.name and tb1.score=a.score

update tb1 set ranking=a.tempRanking from (
select *,rank() over(order by score desc) as tempRanking from tb1 
) a where tb1.name=a.name and tb1.score=a.score

update tb1 set ranking=a.tempRanking from (
select *,dense_rank() over(order by score desc) as tempRanking from tb1 
) a where tb1.name=a.name and tb1.score=a.score
第一種 不重複排名 第二種 跳越排名 第三種 連續排名
reenjie 2014-08-13
  • 打赏
  • 举报
回复
假如兩個分數相同,排名是怎樣的?
爱蹄子的羊头 2014-08-13
  • 打赏
  • 举报
回复

create table tb1 
(
	name varchar(32),
	score int,
	ranking int,
)

GO

insert into tb1 (name, score) values ('CrazyFor'        ,  96840    )      
insert into tb1 (name, score) values ('DBA_Huangzj'     ,  196706   )      
insert into tb1 (name, score) values ('dawugui'         ,  432604   )      
insert into tb1 (name, score) values ('fredrickhu'      ,  296832   )      
insert into tb1 (name, score) values ('Haiwer'          ,  105563   )      
insert into tb1 (name, score) values ('happyflystone'   ,  138420   )      
insert into tb1 (name, score) values ('htl258'          ,  125853   )      
insert into tb1 (name, score) values ('josy'            ,  95658    )      
insert into tb1 (name, score) values ('liangCK'         ,  115245   )      
insert into tb1 (name, score) values ('libin_ftsafe'    ,  260840   )      
insert into tb1 (name, score) values ('paoluo'          ,  106146   )      
insert into tb1 (name, score) values ('pengdali'        ,  374373   )      
insert into tb1 (name, score) values ('qianjin036a'     ,  111430   )      
insert into tb1 (name, score) values ('roy_88'          ,  140446   )      
insert into tb1 (name, score) values ('txlicenhe'       ,  102159   )      
insert into tb1 (name, score) values ('wufeng4552'      ,  121166   )      
insert into tb1 (name, score) values ('zjcxc'           ,  878276   )      


select * from tb1

---

该学生成绩信息管理系统涉及到学生、教师、系统管理员、班级、学生成绩、课程。设置一个系统管理员对系统进行管理。所有用户需输入账号、密码登录进入系统;管理员进入系统后可对学生、老师、班级、课程进行增删改查操作;学生进入系统,查看成绩、查看和修改自己的信息;老师进入系统后,对自己这门课程的学生设置课程成绩、查看和修改自己的信息,查看学生的信息和成绩、以及统计分析学生的成绩; 管理员为班级设置年级,为年级设置课程,为班级的每门课程设置老师,为学生设置班级。一个年级有多门课程(语文、数学、外语等等),班级的每门课程只能有一名老师,一个老师可以有多门课程;老师选择自己这门课程为该课程的学生登记成绩。老师可以查看其他老师的信息(可以当成是老师的通讯录),查看本课程学生的信息和成绩;学生可以查看班级其他同学的信息(可以看成是班级的同学录)。 考试分为两种,一种是年级统考,一种是平时考试。年级统考需要管理员事先添加一次年级统考,考试成绩出来后,老师进入系统选择该次考试为学生登记成绩。平时考试则是班级平时的考试,老师添加考试信息,登记成绩。成绩统计分析则是针对年级统考进行分析,主要涉及各学科分数名次,总分名次。 技术实现 系统环境:Windows开发工具:IDEAJava版本:JDK 1.8服务器:Tomcat 1.8数据库:MySQL 5.X系统采用技术:Servlet+Jsp+Jdbc+H-ui+EasyUI+jQuery+Html+Css+Ajax 系统功能系统主要分为三种用户角色,分别是管理员、老师以及学生,其具体功能如下: - 管理员   学生信息管理、教师信息管理、年级信息管理、班级信息管理、课程信息管理、考试信息管理,系统参数设置 - 老师   教学管理、教师个人信息维护、教师通讯录管理 - 学生考试成绩查询、学生通讯录、学生个人信息维护 运行截图 登录界面: 管理员界面: 考试列表:  成绩统计: 学生信息管理: 教师信息管理: 年级、班级信息管理:  系统设置: 教师界面:  成绩登记:  教师通讯录: 个人信息:  学生界面: 学生成绩查询: 班级通讯录: 学生个人信息:              

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧