查询选了全部课程的学生号
时间: 2023-10-23 11:09:39 浏览: 25
可以使用以下SQL语句查询选了全部课程的学生号:
```
SELECT S.StudentID
FROM Students S
WHERE NOT EXISTS (
SELECT *
FROM Courses C
WHERE NOT EXISTS (
SELECT *
FROM Enrollments E
WHERE E.StudentID=S.StudentID AND E.CourseID=C.CourseID
)
)
```
这个查询语句中使用了子查询和 NOT EXISTS 操作符,首先在外层查询中选取所有学生的学生号,然后在子查询中查询所有课程,再在子查询的子查询中查询每个学生选课情况,如果存在学生没有选某门课程,则该学生不符合条件,最后返回符合条件的学生号。
相关问题
oracle查询学习全部课程学生姓名
假设我们有三个表:`students`,`courses`和`enrollments`。 `students`表包含了学生的信息,`courses`表包含了课程的信息, `enrollments`表包含了学生注册课程的信息。
要查询所有学生所选的所有课程,可以使用以下SQL语句:
```
SELECT students.name, courses.course_name
FROM students
JOIN enrollments ON students.student_id = enrollments.student_id
JOIN courses ON enrollments.course_id = courses.course_id;
```
这将返回一个结果集,其中包含两个列:`name`和`course_name`。`name`列包含学生姓名,`course_name`列包含所选课程的名称。
mysql 查询选了课程的学生人数
假设有如下两张表:
学生表(student)
| id | name |
|----|--------|
| 1 | Tom |
| 2 | Jerry |
| 3 | Alice |
| 4 | Bob |
课程表(course)
| id | name |
|----|-----------|
| 1 | Math |
| 2 | English |
| 3 | History |
| 4 | Geography |
选课表(select_course)
| id | student_id | course_id |
|----|------------|-----------|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 1 |
| 4 | 3 | 3 |
则选了课程的学生人数可以通过以下 SQL 查询语句实现:
```
SELECT COUNT(DISTINCT student_id) AS student_count
FROM select_course;
```
查询结果如下:
| student_count |
|---------------|
| 3 |
解释:在选课表中,使用 COUNT 函数统计不同的学生 ID 数量,即为选了课程的学生人数。其中 DISTINCT 关键字表示去重,避免一个学生选择多门课程导致重复计算。