--学生表:学号,姓名,性别,出生年月,入学日期,专业号 
--选课表:学号,课程号,成绩 
找出至少选修与李勇所选课程的学生信息

解决方案 »

  1.   

    --学生表:学号,姓名,性别,出生年月,入学日期,专业号  
    --选课表:学号,课程号,成绩  
    找出至少选修与李勇所选课程的学生信息
    select * from 选课表 where 课程号 in
    (
    select b.课程号 from 学生表 a , 选课表 b where a.姓名 = '李勇' and a.学号 = b.学号)
      

  2.   

    --1.其中任何一门
    select * from 选课表 where 课程号 in 
    (
    select b.课程号 from 学生表 a , 选课表 b where a.姓名 =  '李勇 ' and a.学号 = b.学号)--2.所有课程
    select * from 学生表 where 学号 in
    (
      select 学号 from 
      (
        select * from 选课表 where 课程号 in (select b.课程号 from 学生表 a , 选课表 b where a.姓名 =  '李勇 ' and a.学号 = b.学号)
      ) t
      group by 学号
      having count(*) >= (select count(*) from 学生表 a , 选课表 b where a.姓名 =  '李勇 ' and a.学号 = b.学号)
    )
      

  3.   

    --学生表:学号,姓名,性别,出生年月,入学日期,专业号   
    --选课表:学号,课程号,成绩   
    找出至少选修与李勇所选课程的学生信息 select * from 选课表 where exists

    select 1 from 学生表 a , 选课表 b where a.姓名 =  '李勇 ' and a.学号 = b.学号)
      

  4.   

    6楼的朋友,你的语句执行成功,现在可以查出来了,非常感谢,请问有没有更简洁的方法呢,比如能不能用上exists什么的?