查询同s1同学所选修相同课程的学生的学号

来源:百度知道 编辑:UC知道 时间:2024/06/15 00:41:49
有三张表 student(sno,sname),course(cno,cname),sc(sno,cno,grade)
s1选修了c1和c2,查询同s1同学所选修相同课程的学生的学号,谢谢了

select sno from sc where cno=(select cno from sc where sno='s1' );报错 ,子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。怎么解决,谢谢

Try this:

SELECT sno
FROM sc WHERE cno in ('c1', 'c2')
group by sno
having coung(*) = 2

先查出所有选了c1或者c2的学号cno in ('c1', 'c2'),再筛选出其中两个都选的学号having count(*) = 2。语句如下:
select sno from sc where cno in ('c1', 'c2') group by sno having count(*) = 2;

当子查询结果多于一个的时候不能用=号,但可以用关键字代替,用like关键字代替‘=’,或者“is”关键字(这个记不太清楚了 你可以试一试)

书上都有,:-(,又是个不看书的孩子