在成绩表中查询至少选修课课程号为c01.c02的学生学号和姓名
时间: 2023-11-16 10:22:27 浏览: 117
好的,我理解了你的问题。根据你的要求,我可以给出以下 SQL 查询语句:
```sql
SELECT s.s_id, s.s_name
FROM student s
WHERE EXISTS (
SELECT *
FROM score sc
WHERE sc.s_id = s.s_id
AND sc.c_id IN ('c01', 'c02')
GROUP BY sc.s_id
HAVING COUNT(DISTINCT sc.c_id) >= 2
)
```
这个查询语句中,我们首先在 `score` 表中找到所有选修了课程号为 `c01` 或 `c02` 的成绩记录,然后按学生 ID 分组,只保留选修了这两门课的学生,最后再在 `student` 表中找到这些学生的学号和姓名。
相关问题
在 Reports 表中查询至少选修课了程号为 C01 和 Co2 的学生学号和姓名。。 ←
您可以使用以下 SQL 查询语句来实现:
```
SELECT s.sno, s.sname
FROM student s
WHERE s.sno IN (
SELECT r.sno
FROM reports r
WHERE r.cno = 'C01' OR r.cno = 'C02'
GROUP BY r.sno
HAVING COUNT(DISTINCT r.cno) = 2
)
```
这个查询语句中,我们使用了子查询来找到选修了 C01 和 C02 两门课的学生编号,然后用这些学生的编号在学生表中查询对应的学生姓名。其中,`IN` 关键字用于判断学生编号是否在子查询的结果集中,`GROUP BY` 和 `HAVING` 语句用于筛选仅选修了 C01 和 C02 两门课的学生。
在 Reports 表中查询既没有选修课程号为 C01 也没有选修课程号为 Co2 的学生学号和姓名。。 ←
可以使用以下 SQL 语句查询:
```
SELECT 学号, 姓名
FROM Students
WHERE 学号 NOT IN (
SELECT 学号
FROM Reports
WHERE 课程号 = 'C01' OR 课程号 = 'C02'
)
```
解释一下这个 SQL 语句的逻辑:
首先在 Reports 表中查询选修课程号为 C01 或 C02 的学生学号,然后通过 NOT IN 来找到没有选修这些课程的学生学号,最后在 Students 表中查询这些学生的学号和姓名。
阅读全文