select distinct 学号 from 选课 scx where not exists( select * from 选课 scy where scy.学号='201215126' and not exists ( select * from 选课 scz where scz.学号=scx.学号 and scz.课程号=scy.课程号))这行代码中我想根据所查询到的学号再学生表查询姓名
时间: 2023-12-18 17:02:15 浏览: 99
你可以使用下面的 SQL 语句来实现:
```
SELECT 姓名
FROM 学生
WHERE 学号 IN (
SELECT DISTINCT 学号
FROM 选课 scx
WHERE NOT EXISTS (
SELECT *
FROM 选课 scy
WHERE scy.学号 = '201215126'
AND NOT EXISTS (
SELECT *
FROM 选课 scz
WHERE scz.学号 = scx.学号
AND scz.课程号 = scy.课程号
)
)
);
```
这个 SQL 语句先在 `选课` 表中查询出满足条件的学号,然后再在 `学生` 表中根据学号查询出对应的姓名。
相关问题
select Sno,Sname from Student where Sno in(select distinct Sno from SC s1 where not exists(select * from SC s2 where s2.Sno='200215121' and not exists(select * from SC s3 where s1.Sno=s3.Sno and s2.Cno=s3.Cno))
这是一个 SQL 查询语句,目的是查找选修了与学号为200215121的学生选修的课程相同的其他学生的学号和姓名。具体实现为:首先从 SC 表中查出所有选过与学号为200215121的学生选修相同课程的学生学号,然后再从 Student 表中查出这些学生的学号和姓名。
请注意,这只是一个查询语句,需要在实际数据库系统中执行才能得到正确结果。
写出SELECT DISTINCT Sno FROM SC x WHERE NOT EXISTS ( SELECT * FROM SC y WHERE y.Sno = '201215122' AND NOT EXISTS ( SELECT * FROM SC z WHERE z.Sno = x.Sno AND z.Cno = y.Cno ) );的关系代数式
该 SQL 查询的关系代数式如下:
$$\pi_{Sno}\left(SC\right) - \pi_{Sno}\left(\sigma_{Sno='201215122'}\left(SC\right)\right) \div \pi_{Sno, Cno}\left(SC\right) - \pi_{Sno, Cno}\left(\sigma_{Sno='201215122'}\left(SC\right)\right)$$
其中,$\pi$ 表示投影操作符,$\sigma$ 表示选择操作符,$\div$ 表示除法操作符。该关系代数式的含义为:先选出所有选课学生的学号,再排除选了 '201215122' 学生选过的课程,最后将结果集中的重复学号去掉,得到最终的结果。
阅读全文