首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql自连接的有关问题(新手)

2012-02-11 
sql自连接的问题(新手)有一个学生表,里面有 学号 功课编号 学生成绩三个字段.用一个SQL查询语句得出每门功

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

热点排行