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 13:02:15 浏览: 92
你可以使用下面的 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 DISTINCT sno FROM SC WHERE NOT EXISTS ( SELECT cno FROM SC AS T WHERE T.sno = '20201234567' AND NOT EXISTS( SELECT * FROM SC AS TT WHERE sno = TT.sno AND T.cno = TT.cno) );
这是一个SQL语句,作用是查询出没有和学号为'20201234567'的学生选过相同课程的学号。
具体解释如下:
首先,内层SELECT语句查询出学号为'20201234567'的学生选过的所有课程号,记为T表。
然后,外层SELECT语句查询出SC表中所有学号,但是排除了与T表中相同课程号的学号,即只查询出没有和'20201234567'选过相同课程的学号。
最后,DISTINCT关键字用于去重,保证最终查询结果中每个学号只出现一次。
阅读全文