这样的sql语句能写吗?(100分)

  • 主题发起人 bryanliu
  • 开始时间
B

bryanliu

Unregistered / Unconfirmed
GUEST, unregistred user!
表如下:
id grade
1 99
1 75
1 100
2 80
2 85
...
我想把同一个id中grade最高的选出来,形成下表,即要在id相同的记录者中比较grade
1 100
2 85
 
select max(id),max(grade)
from tablename group by id
 
select b.id,max(b.grade) from grade b
where id in (select distinct a.id from grade a)
group by b.id

我在sql server2000中通过了
可是效率如何大家可以讨论,本人觉得这样效率不高
 
select id,max(grade)
from tablename
group by id
 
ugvanxk 的做法就可以了
 
同意ugvanxk的做法。
 
抱歉,
表里头不止id,grade两个字段,如果加上姓名,性别等字段,分组则无法通过!
结果应该是:
1 100 张三 男
2 85 李四 女
 
同意ugvanxk的做法。[:)]
 
分组绝对可行的,如果要加上其他字段,你要把字段显示的条件说出来,
我才能知道怎么写,不同的要求写法不一样,
如果你上面的ID就是学生姓名的ID
那么
select id,max(grade)
from tablename
group by id, name, sex就可以了,
 
id is 姓名的id,
biggo对姓名,性别分组不行,我的要求是结果集中每个人只有一个记录,
且包含姓名,性别。
 
select distinct * from
(select * from tablename group by id order by grade desc)
 
我试了很多方法,好像一个sql语句搞不定,关注!!
 
刚才的语句
select id,max(grade)
from tablename
group by id, name, sex写错了,改为
select id,max(grade), name, sex
from tablename
group by id, name, sex,
你想要的东西,一句简单的sql语句就能搞定的
如果你的姓名和性别和你的成绩表是分开的两个表就这么写:

假设表b是学生名单表,字段id, name, sex
假设表a是成绩表,字段id, grade

sql语句可这么写
select a.id, max(a.grade),b.name,b.sex
from a inner join b on a.id = b.id
group by a.id, b.name,b.sex
 
顶部