查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息
时间: 2023-07-23 17:10:33 浏览: 85
要查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息,需要先查询学过编号为"01"的课程的同学,再排除已经学过编号为"02"的课程的同学。具体操作可以使用SQL语句实现,如下所示:
SELECT * FROM student
WHERE sno IN (
SELECT sno FROM sc
WHERE cno = '01'
)
AND sno NOT IN (
SELECT sno FROM sc
WHERE cno = '02'
)
相关问题
查询学过编号为01,并且也学过过编号为02的课程的同学信息
这个问题需要查找同时选修了编号为01和02的课程的学生信息。假设有以下三个表:
**Student表**
| 学号 | 姓名 |
| ----- | ---- |
| 10001 | 张三 |
| 10002 | 李四 |
| 10003 | 王五 |
**Course表**
| 课程编号 | 课程名称 |
| -------- | -------- |
| 01 | 语文 |
| 02 | 数学 |
| 03 | 英语 |
| 04 | 物理 |
**Score表**
| 学号 | 课程编号 | 成绩 |
| ----- | -------- | ---- |
| 10001 | 01 | 90 |
| 10001 | 02 | 80 |
| 10001 | 03 | 70 |
| 10002 | 01 | 85 |
| 10002 | 02 | 90 |
| 10002 | 03 | 80 |
| 10003 | 01 | 70 |
| 10003 | 03 | 75 |
| 10003 | 04 | 60 |
根据这三个表可以使用如下SQL语句查询出同时选修了编号为01和02的课程的学生信息:
```
SELECT S.学号, S.姓名
FROM Student S
INNER JOIN Score SC1 ON S.学号 = SC1.学号 AND SC1.课程编号 = '01'
INNER JOIN Score SC2 ON S.学号 = SC2.学号 AND SC2.课程编号 = '02'
```
运行结果如下:
| 学号 | 姓名 |
| ----- | ---- |
| 10001 | 张三 |
| 10002 | 李四 |
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”的同学,然后根据学号和姓名进行查询。