查询选修了课程名为“数据结构”的学生的学号。 SQL语句
时间: 2023-08-08 19:09:31 浏览: 42
可以使用以下的 SQL 语句查询选修了课程名为“数据结构”的学生的学号:
```
SELECT DISTINCT s.student_id
FROM student s
JOIN course_selection cs ON s.student_id = cs.student_id
JOIN course c ON cs.course_id = c.course_id
WHERE c.course_name = '数据结构'
```
其中,需要先通过 JOIN 连接三个表:学生表(student)、选课表(course_selection)和课程表(course)。然后使用 WHERE 子句筛选出课程名为“数据结构”的课程,最后使用 SELECT DISTINCT 子句返回不重复的学生学号。
相关问题
查询没有选修大学英语的学生姓名和学号sql语句
假设学生表名为"students",学号字段名为"student_id",姓名字段名为"name",选修课程表名为"courses",课程编号字段名为"course_id",课程名称字段名为"course_name",选修关系表名为"course_selections",学生选修课程的记录中,学生学号字段名为"student_id",课程编号字段名为"course_id"。
则查询没有选修大学英语的学生姓名和学号的 SQL 语句如下:
```
SELECT students.student_id, students.name
FROM students
WHERE students.student_id NOT IN (
SELECT course_selections.student_id
FROM course_selections
INNER JOIN courses
ON course_selections.course_id = courses.course_id
WHERE courses.course_name = '大学英语'
);
```
这个 SQL 语句使用了子查询和内连接,首先在子查询中,通过内连接将选修课程表和选修关系表联合起来,筛选出选修了大学英语的学生学号。然后在主查询中,通过 NOT IN 关键字,将这些选修了大学英语的学生学号从学生表中排除,最终返回没有选修大学英语的学生姓名和学号。
Sql语句查询选修了课程C1,C5的学生学号
可以使用如下的 SQL 语句查询选修了课程 C1 和 C5 的学生学号:
SELECT 学生学号
FROM 选修表
WHERE 课程名称 IN ('C1', 'C5')
GROUP BY 学生学号
HAVING COUNT(DISTINCT 课程名称) = 2;