SQL Sever中查询同时选修了1号和3号课程的学号语句怎么写
时间: 2024-12-13 10:23:52 浏览: 4
SQL_Sever数据库常用语句大全.zip
5星 · 资源好评率100%
在SQL Server中,如果你有一个包含学生、课程以及选课信息的数据库表,比如`Students`、`Courses`和`Enrollments`,你可以使用`INNER JOIN`来找出同时选修了1号和3号课程的学生。假设`Enrollments`表有`StudentID`, `CourseID`字段,那么可以尝试以下语句:
```sql
SELECT Enrollments.StudentID
FROM Enrollments
INNER JOIN Courses ON Enrollments.CourseID = Courses.CourseID
WHERE Enrollments.CourseID IN (1, 3)
GROUP BY Enrollments.StudentID
HAVING COUNT(DISTINCT Courses.CourseID) = 2;
```
这个查询做了以下几步:
1. 使用`INNER JOIN`连接`Enrollments`和`Courses`表,基于相同的课程ID。
2. 使用`WHERE`子句筛选出课程ID为1或3的记录。
3. `GROUP BY`按学生ID分组,以便检查每个学生选择了多少种课程。
4. `HAVING`条件确保每个学生的课程组合中有且仅有两个不同的课程ID(即同时选修1号和3号)。
阅读全文