sql 查询没有学生选修的课程号和课程名
时间: 2023-11-15 14:05:03 浏览: 1869
可以使用左连接(left join)和子查询(subquery)来实现这个查询:
```
SELECT c.course_id, c.course_name
FROM course c
LEFT JOIN (
SELECT DISTINCT sc.course_id
FROM score sc
) s ON c.course_id = s.course_id
WHERE s.course_id IS NULL;
```
这个查询首先使用左连接将课程表和选课表连接起来,然后在连接的结果中,筛选出没有成绩记录的课程即可。
相关问题
sql查询全部学生都选修的课程的课程号和课程名
可以使用以下SQL查询语句来获取全部学生都选修的课程的课程号和课程名:
```sql
SELECT c.课程号, c.课程名
FROM 课程 c
WHERE NOT EXISTS (
SELECT s.学号
FROM 学生 s
WHERE NOT EXISTS (
SELECT sc.学号
FROM 选课记录 sc
WHERE sc.学号 = s.学号
AND sc.课程号 = c.课程号
)
);
```
这个查询语句使用了子查询和关联查询的概念。首先,我们选择课程表中的课程号和课程名作为主查询的结果。然后,使用子查询来检查是否存在某个学生没有选修该课程,如果不存在这样的学生,则该课程被视为全部学生都选修的课程。
请注意,这个查询假设有三个表:学生表(包含学生信息)、课程表(包含课程信息)和选课记录表(记录学生选修的课程)。你需要将上述查询语句中的表名和列名根据你的实际数据库结构进行调整。
SQL语句查询姓张学生选修的课程号课程名
假设学生表为students,选课表为course_selections,课程表为courses,可以使用如下SQL语句查询姓张学生选修的课程号和课程名:
```
SELECT courses.course_id, courses.course_name
FROM students
INNER JOIN course_selections ON students.student_id = course_selections.student_id
INNER JOIN courses ON course_selections.course_id = courses.course_id
WHERE students.student_name LIKE '张%';
```
注:该查询语句是基于以下假设:学生表中的学生姓名字段为student_name,课程表中的课程编号字段为course_id,课程名称字段为course_name,选课表中的学生编号字段为student_id,选课表中的课程编号字段为course_id。如果这些字段名不一样,需要根据实际情况做出相应的修改。
阅读全文