主题:求助,如何查寻
gudujian308
[专家分:0] 发布于 2006-02-27 14:57:00
有一张成绩表(course),只有两个字段,姓名(name)和成绩(score)。怎样用
一个SQL语句查询出某个学生的姓名,成绩以及在成绩表中的排名?
表结构如下:
表名:Course
姓名字段:name
成绩字段:score
如何查成绩表中的排名啊??
回复列表 (共25个回复)
11 楼
gudujian308 [专家分:0] 发布于 2006-03-02 22:13:00
要某一个人的成绩排名,不是所有成员的排名,如果说有1000人,而我要查某一人的,你却查出1000个人的,不合要求啊.
12 楼
zhangheng77 [专家分:5510] 发布于 2006-03-02 22:48:00
非要用数据库实现吗?用程序不是简单的多
13 楼
homs [专家分:0] 发布于 2006-03-09 19:13:00
select name,score from course irderby
14 楼
evil9999 [专家分:210] 发布于 2006-03-09 22:05:00
办法不是没有,不过麻烦了点
存储过程:
定义一个虚拟表TABLE
结构:序号 名字 分数
定义个存储过程:
自动从1开始生成序号(主键)
然后定义油标,从原表降序,依此查询数据出来,添加到虚拟表
...
...
下面还要我说嘛??
15 楼
小hei [专家分:730] 发布于 2006-03-20 18:14:00
用order by 对score进行排序查询啊。
select * form course order by desc score
16 楼
tld5yj [专家分:1310] 发布于 2006-10-22 19:37:00
下面的course1和course2都是course本身,court(*)是查出比要查的人分数高的人的数目,再加1就是他的名次了,不过我这帖子好像太过时了,不用加分了,我在这里绕着玩呢,再说了,还不一定对呢。
select score,name,count(*)+1 rank
from course1
where course1.name='要查的人的姓名' and
count(*)
(select count(*)
from course2
where course2.name=course.1.name and
course2.score>course1.score)
17 楼
独步夕阳2 [专家分:120] 发布于 2006-10-26 17:13:00
将查询后的排序结果放在另一张表Score2中,用以下语句:
select * into score2 from score1 order by score desc
然后为显示名次进行如下操作:
select name ,score , identity(int,1,1) as 名次 into #t from Score2
select * from #t
drop table #t
然后就能够达到楼主所要的结果了。
18 楼
独步夕阳2 [专家分:120] 发布于 2006-10-26 17:16:00
再建一个和Score表结构一样的表Score2,然后执行下面这条语句:
select * into score2 from score order by score desc
接着执行下面这段语句就能达到楼主所要的结果:
select name ,score , identity(int,1,1) as 名次 into #t from Score2
select * from #t
drop table #t
19 楼
独步夕阳2 [专家分:120] 发布于 2006-10-26 17:17:00
再建一个和Score表结构一样的表Score2,然后执行下面这条语句:
select * into score2 from score order by score desc
接着执行下面这段语句就能达到楼主所要的结果:
select name ,score , identity(int,1,1) as 名次 into #t from Score2
select * from #t
drop table #t
20 楼
菜鸭 [专家分:5120] 发布于 2006-10-27 07:42:00
select name,score,
(select count(*)+1 from course where score>a.score) as 排名
from course a where name='某人的姓名'
我来回复