回 帖 发 新 帖 刷新版面

主题:求助,如何查寻

有一张成绩表(course),只有两个字段,姓名(name)和成绩(score)。怎样用
一个SQL语句查询出某个学生的姓名,成绩以及在成绩表中的排名?
表结构如下:
表名:Course
姓名字段:name
成绩字段:score

如何查成绩表中的排名啊??

回复列表 (共25个回复)

11 楼

要某一个人的成绩排名,不是所有成员的排名,如果说有1000人,而我要查某一人的,你却查出1000个人的,不合要求啊.

12 楼

非要用数据库实现吗?用程序不是简单的多

13 楼

select name,score from course irderby

14 楼

办法不是没有,不过麻烦了点

存储过程:
定义一个虚拟表TABLE
结构:序号    名字      分数
定义个存储过程:
自动从1开始生成序号(主键)
然后定义油标,从原表降序,依此查询数据出来,添加到虚拟表
...
...

下面还要我说嘛??

15 楼

用order by 对score进行排序查询啊。
 
select * form course order by desc score

16 楼

下面的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 楼


将查询后的排序结果放在另一张表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 楼

再建一个和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 楼


再建一个和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 楼

select name,score,
(select count(*)+1 from course where score>a.score) as 排名
from course a where name='某人的姓名'

我来回复

您尚未登录,请登录后再回复。点此登录或注册