检索出 sc表中至少选修了’C001’与’C002’课程的学生学号。
时间: 2023-11-04 14:04:36 浏览: 90
可以使用以下 SQL 查询语句来实现:
```
SELECT DISTINCT 学号
FROM sc
WHERE 课程号 IN ('C001', 'C002')
GROUP BY 学号
HAVING COUNT(DISTINCT 课程号) = 2
```
解释一下查询语句:
- 首先在 `sc` 表中选取所有选修了 'C001' 或 'C002' 课程的记录。
- 然后按照学号分组,统计每个学生选修的不同课程数目。
- 最后筛选出选修了两门不同课程的学生学号。`HAVING` 子句用于筛选符合条件的分组结果,`COUNT(DISTINCT 课程号)` 表示统计不同的课程数目,这里要求等于 2,即同时选修了 'C001' 和 'C002' 两门课程。
相关问题
SQL语句,已知Student、Course和SC表,查询至少选了C001和C002两门课程的学生的学号和所选的课程号。
可以使用子查询的方式来解决这个问题。具体的 SQL 语句如下:
```
SELECT SC.SID, SC.CID
FROM SC
WHERE SC.CID IN ('C001', 'C002')
AND SC.SID IN (SELECT SC2.SID
FROM SC SC2
WHERE SC2.CID='C001'
AND SC2.SID IN (SELECT SC3.SID
FROM SC SC3
WHERE SC3.CID='C002'))
```
其中,第一个子查询选出选了 C001 或 C002 课程的学生,第二个子查询选出同时选了 C001 和 C002 课程的学生。两个子查询的交集即为至少选了 C001 和 C002 两门课程的学生。
数据库查询同时选修了c001和c003课程的学生学号
好的,根据您的要求,我可以为您提供以下 SQL 查询语句来获得同时选修了 c001 和 c003 课程的学生学号:
```
SELECT s.student_id
FROM Score AS s
WHERE s.course_id = 'c001' AND s.student_id IN (SELECT student_id FROM Score WHERE course_id = 'c003');
```
这个查询语句使用了子查询,首先在 Score 表中查找选修了 c003 课程的学生,然后使用 IN 子句将这些学生的学号作为一个列表,传递给外层查询,用于筛选同时选修了 c001 课程的学生。最后,使用 SELECT 语句来获取符合条件的学生学号。
希望这个查询语句能够帮助到您!