select * from score s1 where not exists (select * from score s2 where s_id=1 and not exists (select * from score s3 where s1.s_id=s3.s_id and s3.c_id=s2.c_id));
时间: 2024-04-05 07:31:24 浏览: 73
这是一个 SQL 查询语句,它的作用是查询出所有与学生ID为1的学生选了完全相同课程的其他学生的成绩记录。
具体来说,该查询语句包含了三个子查询:
1. 第一个子查询(最外层)用于查询学生ID为1的学生的成绩记录(从score表中筛选出s_id=1的记录)。
2. 第二个子查询用于查询所有选了和学生ID为1的学生完全相同课程的其他学生(从score表中筛选出与s_id=1的学生选课完全相同的记录)。
3. 第三个子查询用于查询某个学生是否选了某门课程(从score表中筛选出s_id对应的学生选了c_id对应的课程的记录)。
最终,通过使用not exists和三个子查询的嵌套,我们可以得到与学生ID为1的学生选了完全相同课程的其他学生的成绩记录。
相关问题
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 * from student st inner join score sc on st.s_id=sc.s_id where sc.c_id="01"and sc.c_id !="02" -- -- -- 10、查询没有学全所有课程的同学的信息 修改符合这个语句
以下是修改后的 SQL 语句:
```
SELECT *
FROM student st
WHERE NOT EXISTS (
SELECT *
FROM course
WHERE NOT EXISTS (
SELECT *
FROM score
WHERE s_id = st.s_id AND c_id = course.c_id
)
)
```
这个查询语句会返回所有学习了所有课程的同学信息。如果想查询没有学全所有课程的同学信息,只需修改 `NOT EXISTS` 为 `EXISTS` 即可:
```
SELECT *
FROM student st
WHERE EXISTS (
SELECT *
FROM course
WHERE NOT EXISTS (
SELECT *
FROM score
WHERE s_id = st.s_id AND c_id = course.c_id
)
)
```
阅读全文