表1
ID 姓名 科目 成绩
1 小王 语文 81
2 小王 数学 69
3 小王 英语 67
4 小李 语文 62
5 小李 数学 100
6 小李 英语 60
7 小张 语文 80
8 小张 数学 81
9 小张 英语 77
要求查询出每个人的最高分.
结果
ID 姓名 科目 成绩
1 小王 语文 81
5 小李 数学 100
8 小张 数学 81
ID 姓名 科目 成绩
1 小王 语文 81
2 小王 数学 69
3 小王 英语 67
4 小李 语文 62
5 小李 数学 100
6 小李 英语 60
7 小张 语文 80
8 小张 数学 81
9 小张 英语 77
要求查询出每个人的最高分.
结果
ID 姓名 科目 成绩
1 小王 语文 81
5 小李 数学 100
8 小张 数学 81
//先 根据学生分组 找出最高分数 (有可能并列)
Select 姓名,max(成绩) 成绩 from 表1 group by 姓名
//在拿结果到表1中 用上面的结果作为条件 查询
select max(姓名) as 姓名,科目,max(成绩) as 成绩 from table group by 科目
Select A.* From 表1 A
Inner Join
(Select 姓名, Max(成绩) As 成绩 From 表1 Group By 姓名) B
On A.姓名 = B.姓名 And A.成绩 = B.成绩--方法二
Select * From 表1 A Where Not Exists(Select 成绩 From 表1 Where 姓名 = A.姓名 And 成绩 > A.成绩)--方法三
Select * From 表1 A Where 成绩 In (Select Max(成绩) From 表1 Group By 姓名)
不好意思少了个 as 应该是:
select max(姓名) as 姓名,科目,max(成绩) as 成绩 from table group by 科目
---------
這個明顯錯誤的。