-- 查询每个学生的最高分及所属学科 -- 常见java面试题
表数据
张三 语文 61
张三 数学 50
张三 英语 100
李四 语文 61
李四 数学 80
李四 英语 90
王五 语文 61
王五 数学 50
王五 英语 20
赵六 语文 61
赵六 数学 80
赵六奥 英语 90
老七 物理 58
可以先查出最早分
SELECT c.username,MAX(c.score) maxscore from clazz c group by c.username;
得到以下信息
张三 100
李四 90
王五 61
老七 58
赵六 80
赵六奥 90
再查询
SELECT c.username,c.subjects,c.score '最高分' FROM (SELECT c.username,MAX(c.score) maxscore from clazz c group by c.username) t , clazz c
WHERE
t.maxscore = c.score
AND
t.username = c.username;
得到
张三 英语 100
李四 英语 90
王五 语文 61
赵六 数学 80
赵六奥 英语 90
老七 物理 58
浙公网安备 33010602011771号