数据库列出选修了001号课程的学生的学号和姓名使用in子查询
时间: 2023-11-10 18:07:57 浏览: 686
假设学生表为 students,选课表为 courses,包含学生学号(id)和姓名(name)的列,包含课程编号(course_id)和学生学号(student_id)的列。要查询选修了001号课程的学生的学号和姓名,可以使用以下SQL语句:
```
SELECT id, name
FROM students
WHERE id IN (
SELECT student_id FROM courses WHERE course_id = '001'
);
```
其中,子查询 `SELECT student_id FROM courses WHERE course_id = '001'` 用于获取选修了001号课程的学生学号,然后在外层查询中使用 `WHERE id IN` 子句筛选出这些学生的学号和姓名。
相关问题
用相关子查询查询选修了107号课程的学生学号和姓名
要查询选修了107号课程的学生学号和姓名,可以使用以下SQL语句:
SELECT s.sno, s.sname
FROM student s
WHERE s.sno IN (
SELECT sc.sno
FROM sc
WHERE sc.cno = '107'
);
解释一下这个SQL语句的含义:
首先,我们需要查询选修了107号课程的学生,因此我们需要在sc表中查找cno为107的记录。然后,我们需要获取这些记录中的sno,也就是选修了107号课程的学生学号。最后,我们需要在student表中查找这些学生的姓名。
数据库查询同时选修了c001和c003课程的学生学号
好的,根据您的要求,我可以为您提供以下 SQL 查询语句来获得同时选修了 c001 和 c003 课程的学生学号:
```
SELECT s.student_id
FROM Score AS s
WHERE s.course_id = 'c001' AND s.student_id IN (SELECT student_id FROM Score WHERE course_id = 'c003');
```
这个查询语句使用了子查询,首先在 Score 表中查找选修了 c003 课程的学生,然后使用 IN 子句将这些学生的学号作为一个列表,传递给外层查询,用于筛选同时选修了 c001 课程的学生。最后,使用 SELECT 语句来获取符合条件的学生学号。
希望这个查询语句能够帮助到您!