ID 班级 姓名 分数
1 一班 张 98
2 一班 李 92
3 一班 王 91
4 二班 孙 40
5 二班 赵 60
6 三班 钱 87
7 三班 洪 88
得到每个班级最高分数的人,结果如下
1 一班 张 98
5 二班 赵 60
7 三班 洪 88谢谢呀~
1 一班 张 98
2 一班 李 92
3 一班 王 91
4 二班 孙 40
5 二班 赵 60
6 三班 钱 87
7 三班 洪 88
得到每个班级最高分数的人,结果如下
1 一班 张 98
5 二班 赵 60
7 三班 洪 88谢谢呀~
SELECT 1 FROM TB T2 WHERE T2.班级=T1.班级 AND T2.分数>T1.分数
)
如果有分数一样的就全列出来了。
--> 测试数据:[TB]
if object_id('[TB]') is not null drop table [TB]
create table [TB]([ID] int,[班级] varchar(4),[姓名] varchar(2),[分数] int)
insert [TB]
select 1,'一班','张',98 union all
select 2,'一班','李',92 union all
select 3,'一班','王',91 union all
select 4,'二班','孙',40 union all
select 5,'二班','赵',60 union all
select 6,'三班','钱',87 union all
select 7,'三班','洪',88select * from TB T where not exists(select 1 from TB where T.[班级]=[班级] and t.[分数]<[分数])/*
ID 班级 姓名 分数
----------- ---- ---- -----------
1 一班 张 98
5 二班 赵 60
7 三班 洪 88(3 行受影响)*/
drop table TB
go
create table [TB]([ID] int,[班级] varchar(4),[姓名] varchar(2),[分数] int)
insert [TB]
select 1,'一班','张',98 union all
select 2,'一班','李',92 union all
select 3,'一班','王',91 union all
select 4,'二班','孙',40 union all
select 5,'二班','赵',60 union all
select 6,'三班','钱',87 union all
select 7,'三班','洪',88select * from tb t where 分数=(select max(分数) from tb where 班级=t.班级 )/*
ID 班级 姓名 分数
----------- ---- ---- -----------
1 一班 张 98
7 三班 洪 88
5 二班 赵 60(3 行受影响)
*/
很简单
select A.ID,A.班级,A.姓名,A.分数,MAX(A.分数) from table A INNER JOIN table B ON
A.ID=B.ID
GROUP BY A.ID,A.班级,A.姓名,A.分数