sql自连接的问题(新手)
有一个学生表,里面有 学号 功课编号 学生成绩三个字段.
用一个SQL查询语句得出每门功课成绩最好的前两名
学号 功课编号 学生成绩
1 1 99
2 1 98
3 1 100
4 2 88
5 2 87
6 2 88
7 3 99
8 3 88
9 3 100
答案是这样的:
SELECT DISTINCT chengji1.*
FROM chengji chengji1 where chengji1.xuehao in
(SELECT TOP 2 chengji.xuehao
FROM chengji
WHERE chengji.kehao = chengji1.kehao
ORDER BY score DESC)
能为我详细说明下吗?尤其是括号中的,我搞了两天还是没搞明白为什么要这样写
请大虾们详细为我说明下,感激不尽啊!!!!!!!!越详细越好谢谢大家了
[解决办法]
SELECT DISTINCT chengji1.*
FROM chengji chengji1 where chengji1.xuehao in
(SELECT TOP 2 chengji.xuehao
FROM chengji
WHERE chengji.kehao = chengji1.kehao
ORDER BY score DESC)
自连接查询,
里面查询:
按score倒序,从chengji表中查询出 与外层查询相等的前两位的学号,
比如:
kehao=1
3 100
1 99
2 98
则结果为3、1