sc表和student表查询学过“001”并且也学过编号“002”课程的同学的学号、姓名
时间: 2024-01-21 16:04:00 浏览: 113
假设sc表中的学生编号字段为sno,课程编号字段为cno,成绩字段为score,student表中的学生编号字段为sno,姓名字段为sname,可以使用下面的SQL语句查询学过“001”并且也学过编号“002”课程的同学的学号、姓名:
```
SELECT s.sno, s.sname
FROM student s
WHERE s.sno IN (
SELECT s1.sno
FROM sc s1
WHERE s1.cno = '001' AND s1.sno IN (
SELECT s2.sno
FROM sc s2
WHERE s2.cno = '002'
)
);
```
这个SQL查询语句使用了子查询,首先查询学过“002”课程的同学的学号,然后再查询学过“001”课程的同学的学号,并且这些学生的学号必须同时出现在两个子查询的结果中,最终返回这些学生的学号和姓名。
相关问题
sql查询学过“001”并且也学过编号“002”课程的同学的学号、姓名
可以使用如下的 SQL 语句来查询学过“001”并且也学过编号“002”课程的同学的学号和姓名:
```
SELECT s.id AS 学号, s.name AS 姓名
FROM student s
INNER JOIN score sc1 ON s.id = sc1.student_id AND sc1.course_id = '001'
INNER JOIN score sc2 ON s.id = sc2.student_id AND sc2.course_id = '002';
```
其中,`student` 表存储了所有同学的学号和姓名信息,`score` 表存储了每个同学的选课和成绩信息。使用两次 `INNER JOIN` 操作将 `score` 表与 `student` 表连接起来,分别筛选出选过“001”和选过“002”的同学,然后根据学号和姓名进行查询。
course表 teacher表 sc表 student表查询没学过“叶平”老师课的同学的学号、姓名
好的,根据您的要求,可以使用以下 SQL 语句来查询:
```
SELECT s.id, s.name
FROM student s
WHERE s.id NOT IN (
SELECT sc.student_id
FROM sc
INNER JOIN course c ON sc.course_id = c.id
INNER JOIN teacher t ON c.teacher_id = t.id
WHERE t.name = '叶平'
)
```
这条 SQL 语句会查询出所有没有学过叶平老师课的同学的学号和姓名。具体地,它使用了子查询来找出所有学过叶平老师课程的学生,然后用 NOT IN 子句来排除这些学生,最终返回没有出现在这个子查询结果中的学生信息。
阅读全文