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、查询没有学全所有课程的同学的信息 修改符合这个语句
时间: 2023-07-16 07:12:58 浏览: 114
以下是修改后的 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
)
)
```
相关问题
2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数 SELECT st.s_name, sc.s_score,sc.c_id FROM student st INNER JOIN score sc ON st.s_id = sc.s_id WHERE sc.c_id=01 < ALL (SELECT s_score FROM score WHERE c_id = 02)and sc.c_id !=02 and sc.c_id !=03 帮我修改
您可以尝试以下 SQL 查询语句:
```
SELECT st.s_name, sc.s_score, sc.c_id
FROM student st
INNER JOIN score sc ON st.s_id = sc.s_id
WHERE sc.c_id = '01'
AND sc.s_score < ALL (SELECT s_score FROM score WHERE c_id = '02')
```
这个查询语句会返回"01"课程比"02"课程成绩低的学生的信息及课程分数。其中,INNER JOIN 用于将 student 表和 score 表连接起来,WHERE 子句用于筛选出 c_id 为 "01" 的成绩,并且这些成绩必须小于所有的 c_id 为 "02" 的成绩。注意,需要将 c_id 作为字符串进行比较。
8、查询没学过"张三"老师讲授的任一门课程的学生姓名 select * from student st inner join score sc on st.s_id =sc.s_id inner join course co on sc.c_id=co.c_id inner join teacher te on co.t_id=te.t_id where te.t_name ="张三"
你的SQL语句有些问题,应该使用`NOT IN`关键字来查询没学过张三老师讲授的任一门课程的学生姓名。正确的SQL语句如下:
```
SELECT DISTINCT st.s_name
FROM student st
WHERE st.s_id NOT IN (
SELECT sc.s_id
FROM score sc
INNER JOIN course co ON sc.c_id = co.c_id
INNER JOIN teacher te ON co.t_id = te.t_id
WHERE te.t_name = '张三'
)
```
这个SQL查询语句会返回一个学生姓名的列表,这些学生都没学过张三老师讲授的任一门课程。
阅读全文
相关推荐
















