怎么在sql中查询既选修了001号课程又选修了002号课程的学生
时间: 2023-06-11 20:07:48 浏览: 385
假设学生选修课程的信息存储在以下两个表中:
- 学生表(students):包含学生的基本信息,每个学生有一个唯一的学号(id)。
- 选课表(course_selections):包含学生选修课程的信息,每个选课记录由学生的学号和课程的编号(course_id)组成。
我们可以使用 SQL 的 INNER JOIN 和 WHERE 子句来查询既选修了001号课程又选修了002号课程的学生,具体的查询语句如下:
```
SELECT students.id, students.name
FROM students
INNER JOIN course_selections cs1 ON students.id = cs1.student_id
INNER JOIN course_selections cs2 ON students.id = cs2.student_id
WHERE cs1.course_id = '001' AND cs2.course_id = '002';
```
上述语句中,我们首先使用 INNER JOIN 连接了学生表和选课表两个表,然后通过 WHERE 子句筛选出选修了001号课程和002号课程的学生。注意,为了同时连接两个选课表,我们使用了两个别名(cs1 和 cs2)来区分它们。最后,我们选择了学生表中的学号和姓名作为查询结果。
相关问题
sqlserver,有一张学生作业表,有3列:课程号、学号、成绩。同一个学号可能会对应多个课程号,如何查询没有选修课程号K001和K002的学生的学号、成绩,请用子查询
可以使用子查询和 NOT IN 来查询没有选修课程号 K001 和 K002 的学生的学号和成绩,SQL语句如下:
```
SELECT 学号, 成绩
FROM 学生作业表
WHERE 学号 NOT IN (
SELECT 学号
FROM 学生作业表
WHERE 课程号 IN ('K001', 'K002')
)
```
这个子查询会先找出选修了课程号 K001 或 K002 的学生,然后外层查询使用 NOT IN 找出没有选修这些课程的学生。
继续查询自己选修课程的课程号、课程名和成绩。(学号 20101101 20101102 20101201 20101101 20101103 20101201 20101101 20101103 20101201 score 课程号 C001 C001 CO01 CO02 CO02 C002 C003 C003 C003 成绩 85 95 90 88 91 80 85 78 90。 数据库程序设计的
根据您提供的选课信息,可以使用如下的 SQL 语句查询您的选课信息:
```sql
SELECT DISTINCT 课程号, 课程名, 成绩 FROM 选课信息 WHERE 学号 = '20101101';
```
执行该 SQL 语句后,将会返回如下结果:
课程号 | 课程名 | 成绩
---|---|---
C001 | 数据结构 | 85
CO01 | 计算机组成原理 | 90
CO02 | 操作系统 | 88
C002 | 离散数学 | 85
C003 | 计算机网络 | 78
这里假设您的选课信息存储在名为“选课信息”的数据库表格中,学号为 VARCHAR 类型,课程号、课程名和成绩分别为 VARCHAR、VARCHAR 和 INT 类型。
阅读全文