SQL一条语句能做得到吗?(100分)

  • 主题发起人 主题发起人 太阳河上
  • 开始时间 开始时间

太阳河上

Unregistered / Unconfirmed
GUEST, unregistred user!
有这样的一个表:
姓名 班级 分数
A01 A1 80
A02 A1 70
A03 A1 88
B01 B1 70
B02 B2 76
B03 B3 90
我想用一条语句查找,每个班中最高的人,如:
姓名 班级 本班最分数
A03 A1 88
B03 B3 90
能做得到吗,如何写?
 
select 姓名,班级,max(分数) 分数
from 表
group by 班级
 
楼上的这样不行
 
我已经做出来了:
select 姓名,班级,Max(分数) from Table1 A
where (分数=(select max(分数) from table1 where 班级=A.班级))
group by 姓名,班级
大家来测试一下.
 
为什么结果中 B3 班有记录,B1、B2班没记录?
“楼上的这样不行”---不能简单地说行还是不行,说出原因,别人才好帮你。
 
回kaida:
sorry
1.结果写错啦,应该是:
姓名 班级 本班最分数
A03 A1 88
B02 B2 76
B03 B3 90

2.雪狼2008的SQL不完整,应该是:
select 姓名,班级,max(分数) 分数
from 表
group by 姓名,班级
否则无法执行.实际按以上的SQL实行,得不到我想要的结果.
 
select * from [表名] a
where [分数] in
(select top 1 [分数] from [表名] where [班级]=a.[班级] order by [分数] desc)
 
或:
select * from [表名] a
where [分数] in
(select max([分数]) from [表名] where [班级]=a.[班级])
order by [班级]
 
谢谢Kaida,您的完全正确.同样也谢谢雪狼2008.真是三人行必有我师,结题,
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
680
import
I
后退
顶部