20查询score中选学多门课程的同学中分数为非最高分成绩的记录。
select *
from sc a, sc b,st
where  b.sno=st.sno and a.sno=st.sno and a.sno=b.sno and a.cno!=b.cno  

解决方案 »

  1.   

    这个题目有二义性.
    题目中的两个"的"是如何理解?
    如果是:学生选了多门课程,每门课程都有一个分数,扣除掉该同学最高分数的成绩,剩下来是(如果学生只选了一门课程,那该成绩即为最高分,被扣除):
    select * from sc a where exists(select 1 from sc where sno=a.sno and score>a.score)如果是:学生选了课程,每门课程有成绩排序,扣除了最高分以后,剩下同学中,并非只选此一门课程的那些同学的成绩:
    select * from sc a where exists(select 1 from sc where cno=a.cno and score>a.score)
    and exists(select 1 from sc where sno=a.sno and cno<>a.cno) 
      

  2.   


    建议你提供详细的资料:
    例如表的结构,表之间的关系,测试数据,相关算法及需要的结果。
    这样有助于我们理解你的意思,更主要的是能尽快让你获得答案或解决问题的方法。
    否则参考这里,看是否有你需要的东西?
    一个项目涉及到的50个Sql语句(整理版)
    http://topic.csdn.net/u/20100517/17/b2ab9d5e-73a2-4f54-a7ec-40a5eabd8621.html
      

  3.   

    a.cno!=b.cno , 请问这是成绩字段吗,觉得怎么都是一些编号