SQL查询选修了非所在院系开设的选修课的学生的学号姓名和班级
时间: 2023-04-05 17:00:54 浏览: 119
我可以回答这个问题。SQL查询语句如下:
SELECT 学号, 姓名, 班级
FROM 学生信息表
WHERE 学号 IN (
SELECT 学号
FROM 选课信息表
WHERE 课程编号 IN (
SELECT 课程编号
FROM 课程信息表
WHERE 所在院系 <> 学生所在院系
AND 课程类型 = '选修课'
)
);
相关问题
查询没有选修大学英语的学生姓名和学号sql语句
假设学生表名为"students",学号字段名为"student_id",姓名字段名为"name",选修课程表名为"courses",课程编号字段名为"course_id",课程名称字段名为"course_name",选修关系表名为"course_selections",学生选修课程的记录中,学生学号字段名为"student_id",课程编号字段名为"course_id"。
则查询没有选修大学英语的学生姓名和学号的 SQL 语句如下:
```
SELECT students.student_id, students.name
FROM students
WHERE students.student_id NOT IN (
SELECT course_selections.student_id
FROM course_selections
INNER JOIN courses
ON course_selections.course_id = courses.course_id
WHERE courses.course_name = '大学英语'
);
```
这个 SQL 语句使用了子查询和内连接,首先在子查询中,通过内连接将选修课程表和选修关系表联合起来,筛选出选修了大学英语的学生学号。然后在主查询中,通过 NOT IN 关键字,将这些选修了大学英语的学生学号从学生表中排除,最终返回没有选修大学英语的学生姓名和学号。
sql查询选修课最多的学生(学号)
这里假设有三个表:students(学生表)、courses(课程表)和选课表(course_selection)。选课表包含学生学号和课程编号。
可以使用以下SQL查询选修课最多的学生(学号):
```
SELECT student_id
FROM course_selection
GROUP BY student_id
ORDER BY COUNT(course_id) DESC
LIMIT 1;
```
这个查询会按照选修课程数量倒序排列学生,并返回选修课程数量最多的学生的学号。如果有多个学生选修课程数量相同,则会返回其中任意一个学生的学号。