关于MYSQL索引排列的有关问题

关于MYSQL索引排列的问题

各位大大,小弟有个问题不解,MYSQL中,

比如说有以下表结构和内容

id(自动增加)   姓名   语文成绩   数学成绩   物理成绩

1                       AA     50             60             70

2                       BB     55             65             75

3                       CC     40             46             80

4                       DD     34             70             50

…….

如果我想按语文成绩或者数学或者物理成绩排列,如何得到查询某人的语文成绩排名??   比如说用户 “CC “按物理成绩排名第一,或者 “DD “按数学成绩排列第一,我如何输出这个第一??假设数据库中数据庞大,不是小数据!

谢谢帮忙,结帖人人有分!



select *,

(select count(*) from 表名 where 语文成绩> =t.语文成绩) as 语文排名,

(select count(*) from 表名 where 数学成绩> =t.数学成绩) as 数学排名,

(select count(*) from 表名 where 物理成绩> =t.物理成绩) as 物理排名

from 表名 as t



declare @ta table(id int identity(1,1),姓名 varchar(5), 语文成绩 int, 数学成绩 int,物理成绩 int)

insert @ta select ‘AA ‘, 50, 60, 70

insert @ta select ‘BB ‘, 55, 65, 75

insert @ta select ‘CC ‘, 40, 46, 80

insert @ta select ‘DD ‘, 34, 70, 50

select * ,

[语文成绩排名]=(select count(1) from @ta where 语文成绩> a.语文成绩)+1,

[数学成绩排名]=(select count(1) from @ta where 数学成绩> a.数学成绩)+1,

[物理成绩排名]=(select count(1) from @ta where 物理成绩> a.物理成绩)+1

from @ta a

(1 行受影响)

(1 行受影响)

(1 行受影响)

(1 行受影响)

id 姓名 语文成绩 数学成绩 物理成绩 语文成绩排名 数学成绩排名 物理成绩排名

———– —– ———– ———– ———– ———– ———– ———–

1 AA 50 60 70 2 3 3

2 BB 55 65 75 1 2 2

3 CC 40 46 80 3 4 1

4 DD 34 70 50 4 1 4

(4 行受影响)

关于MYSQL索引排列的有关问题

相关文章:

你感兴趣的文章:

标签云: