SQL Server查询至少选修了课程号为C001、E002和X003三门课(可多于这三门)的学生学号和姓名。
时间: 2023-07-15 12:11:10 浏览: 142
SQL学生选课
可以使用如下的SQL查询语句来实现:
```sql
SELECT S.学号, S.姓名
FROM 学生 S
INNER JOIN 选课 C ON S.学号 = C.学号
WHERE C.课程号 IN ('C001', 'E002', 'X003')
GROUP BY S.学号, S.姓名
HAVING COUNT(DISTINCT C.课程号) >= 3
```
解释一下这条SQL查询语句的具体含义:
- `SELECT S.学号, S.姓名`:表示我们要查询的结果中包括学号和姓名两列。
- `FROM 学生 S INNER JOIN 选课 C ON S.学号 = C.学号`:表示我们要从学生表和选课表中获取数据,并且通过学号这一列进行内连接。
- `WHERE C.课程号 IN ('C001', 'E002', 'X003')`:表示我们要筛选出选修了C001、E002和X003三门课的所有选课记录。
- `GROUP BY S.学号, S.姓名`:表示我们要按照学号和姓名两列进行分组。
- `HAVING COUNT(DISTINCT C.课程号) >= 3`:表示我们要筛选出选修课程数目大于等于3门的学生,这里使用了`COUNT`函数来计算每个学生选修的课程数量,同时使用`DISTINCT`关键字去重,避免同一个学生重复计算。
阅读全文