create table 选课
(
学号 varchar(10),
课程号 varchar(10),
成绩 int
)insert into 选课 values('1','a',99)
insert into 选课 values('1','b',99)
insert into 选课 values('1','c',99)
insert into 选课 values('1','d',99)
insert into 选课 values('2','a',93)
insert into 选课 values('3','a',94)
insert into 选课 values('4','a',95)
insert into 选课 values('5','a',99)
insert into 选课 values('2','b',93)
insert into 选课 values('3','b',94)
insert into 选课 values('4','b',95)
insert into 选课 values('5','b',99)
insert into 选课 values('2','c',93)
insert into 选课 values('3','c',94)
insert into 选课 values('4','c',95)
insert into 选课 values('5','c',99)
insert into 选课 values('2','d',93)
insert into 选课 values('3','d',94)
insert into 选课 values('4','d',99)
insert into 选课 values('5','d',91)select 学号
from 选课 t1 join
(select 课程号,max(成绩) 成绩
from 选课
group by 课程号) t2
  on t1.课程号=t2.课程号 and t1.成绩=t2.成绩
group by 学号
having count(*)=(select count(distinct 课程号) from 选课)drop table 选课

解决方案 »

  1.   

    sorry,又犯了个错误select t1.学号
    from 选课 t1 join
    (select 课程号,max(成绩) 成绩
    from 选课
    group by 课程号) t2
      on t1.课程号=t2.课程号 and t1.成绩=t2.成绩
    group by 学号
    having count(*)=(select count(distinct 课程号) from 选课 where 学号=t1.学号)
      

  2.   

    在eru 的基礎上我修改一下create table 选课
    (
    学号 varchar(10),
    课程号 varchar(10),
    成绩 int
    )insert into 选课 values('1','a',99)
    insert into 选课 values('1','b',99)
    insert into 选课 values('1','c',99)
    insert into 选课 values('1','d',99)
    insert into 选课 values('2','a',93)
    insert into 选课 values('3','a',94)
    insert into 选课 values('4','a',95)
    insert into 选课 values('5','a',99)
    insert into 选课 values('2','b',93)
    insert into 选课 values('3','b',94)
    insert into 选课 values('4','b',95)
    insert into 选课 values('5','b',99)
    insert into 选课 values('2','c',93)
    insert into 选课 values('3','c',94)
    insert into 选课 values('4','c',95)
    insert into 选课 values('5','c',99)
    insert into 选课 values('2','d',93)
    insert into 选课 values('3','d',94)
    insert into 选课 values('4','d',99)
    insert into 选课 values('5','d',91)select 学号 ,课程号 , 成绩 from 选课 where 课程号 = 'a'select * from  选课 A  where 成绩  in  ( select top  1 成绩 from 选课 where  课程号= A.课程号  order by 成绩  desc  )
    order by  成绩  desc  , 课程号
      

  3.   

    查詢結果為:
    学号         课程号        成绩          
    ---------- ---------- ----------- 
    1          a          99
    5          a          99
    5          b          99
    1          b          99
    1          c          99
    5          c          99
    4          d          99
    1          d          99