我问个关于SQLSERVER exists子查询的问题啊我简单说一下要做啥事:我现在有三个表:
C是课程表 列Cno(课程编号) Cname(课程名字) Score(课程分)S是学生信息表 列Sno(学号) Sname(姓名)SC是成绩表 列Sno(对应学生的学号) Cno(对应课程号) Grade(成绩)现在我要用exists查询出选修某课程的课程名字、学生名字、学生成绩以下是我尝试的exists查询:select 课程=Cname,姓名=Sname,成绩=Grade from C,S,SC where exists(select * from SC where S.Sno = SC.Sno and SC.Cno='01')and C.Cno='01' and SC.Cno='01'

解决方案 »

  1.   

    exists存在一条记录就满足条件!
      

  2.   

    结果如下:
    课程         姓名   成绩
    ---------- ---- ------
    Java       太阳   60
    Java       太阳   85
    Java       太阳   65
    Java       月亮   60
    Java       月亮   85
    Java       月亮   65
    Java       长城   60
    Java       长城   85
    Java       长城   65
      

  3.   

    应该输出的是以下结果:类似内联语句(select 课程=Cname,成绩=Grade,姓名=Sname from C,S,SC where S.Sno = SC.Sno and C.Cno = SC.Cno and C.Cno = '01')课程         成绩     姓名
    ---------- ------ ----
    Java       60     太阳  
    Java       85     长城  
    Java       65     月亮  
      

  4.   

    http://blog.csdn.net/lihan6415151528/archive/2009/08/20/4466914.aspx看看这个
      

  5.   

    select S.Sname as 姓名,SC.Grade as 成绩,C.Cname as 考试科目 from S,C,SC where exists (select Sno from SC where exists (select Cno from C where Cname = 'java' and C.Cno = SC.Cno) and S.Sno = SC.Sno) and C.Cno = SC.Cno and S.Sno = SC.Sno
      

  6.   

    不对,显示结果为:姓名   成绩     考试科目
    ---- ------ ----------
    太阳   60     Java      
    太阳   70     C语言       
    太阳   50     计算机基础     
    长城   85     Java      
    长城   75     C语言       
    长城   86     计算机基础     
    月亮   65     Java      
    月亮   88     软件技术基础 
      

  7.   

    我的意思是只使用exists显示想要的结果,不再在exists外使用条件