1.查询既选修了课程c01又选修了课程c02的学生的学号和姓名。
时间: 2023-11-10 12:03:18 浏览: 174
好的,您的问题是:查询既选修了课程c01又选修了课程c02的学生的学号和姓名。以下是SQL语句:
```
SELECT student_id, student_name
FROM student_course
WHERE course_id IN ('c01', 'c02')
GROUP BY student_id, student_name
HAVING COUNT(DISTINCT course_id) = 2;
```
请注意,上述SQL语句是基于常见的关系型数据库,具体实现可能因实际情况而异。
相关问题
在成绩表中查询至少选修课课程号为c01.c02的学生学号和姓名
好的,我理解了你的问题。根据你的要求,我可以给出以下 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 学号, 姓名
FROM Students
WHERE 学号 NOT IN (
SELECT 学号
FROM Reports
WHERE 课程号 = 'C01' OR 课程号 = 'C02'
)
```
解释一下这个 SQL 语句的逻辑:
首先在 Reports 表中查询选修课程号为 C01 或 C02 的学生学号,然后通过 NOT IN 来找到没有选修这些课程的学生学号,最后在 Students 表中查询这些学生的学号和姓名。
阅读全文