日期:2014-05-18  浏览次数:20622 次

两道sql题,求各位帮忙
1.设有"学生Student(sID,sName)","课程Course(cID,cName)","选课StudentCourse(scID,sID,cID)" 这三个表。一个学生可以选修0..n门课,一门课也可以被0..n个学生选修。
1):请用一条SQL语句找出选修了所有课程的学生姓名。

2.在"信息表Info(infoID,infoTitle)"中,infoID是自增列,但Info表中的数据进行过删除,即infoID不是连续的。
1):请用一条SQL语句找出按infoID升序排列,现在排在第100~120位置的那20条数据


------解决方案--------------------
SQL code

--1
select b.* from (
  select sID
  group by sID
  having count(cID) = (select count(1) from Course)
) a inner join Student b on a.sID = b.sID
--2
;with t as (
 select row_number() over (order by infoID) Row,infoID,infoTitle from Info
)
select * from t where Row>=100 and Row<120