sql语句查询没有被任何人选修的课程名
时间: 2023-07-01 10:21:13 浏览: 155
可以使用如下 SQL 语句查询没有被任何人选修的课程名:
```sql
SELECT course_name
FROM course
WHERE course_id NOT IN (
SELECT course_id
FROM course_selection
)
```
这个查询语句中,`course` 表包含课程信息,包括 `course_id` 和 `course_name`;`course_selection` 表包含选课信息,包括 `course_id` 和 `student_id`。查询语句使用子查询 `SELECT course_id FROM course_selection` 找到所有被选修的课程,然后在 `course` 表中查找没有在这个子查询的结果中出现过的课程名。
相关问题
sql查询全部学生都选修的课程的课程号和课程名请用not in语句改写
SQL查询中,如果你想找出所有学生都选修过的课程的课程号和课程名,并且使用`NOT IN`语句来排除那些没有被任何学生选择的课程,可以按照下面的方式编写:
假设我们有两个表,一个是`students`表,包含字段`s_id`(学生ID),另一个是`courses`表,包含字段`c_id`(课程ID)、`course_name`(课程名)。而一个`enrollments`表记录了学生的选课情况,有字段`s_id`和`c_id`。
首先,你需要确定哪些课程没有人选择,这可以通过反向查询来完成:
```sql
SELECT c.c_id, c.course_name
FROM courses c
WHERE NOT EXISTS (SELECT 1 FROM enrollments e WHERE e.c_id = c.c_id)
```
然后,你可以从这个结果集中进一步筛选出所有被所有学生选修的课程:
```sql
SELECT DISTINCT c.c_id, c.course_name
FROM courses c
WHERE c.c_id IN (
SELECT e.c_id
FROM enrollments e
GROUP BY e.c_id
HAVING COUNT(DISTINCT s.s_id) = (SELECT COUNT(*) FROM students)
)
```
在这个查询中,内部的子查询通过计数每个课程的学生数量来找到有全班同学选修的课程。外部查询则只保留这些课程。
查询没有被任何人选修的
我理解你的问题是想要查询没有被任何人选修的课程。如果是这样的话,你可以通过以下 SQL 语句进行查询:
```
SELECT *
FROM 课程表
WHERE 课程编号 NOT IN (SELECT DISTINCT 课程编号 FROM 选课表)
```
其中,`课程表` 和 `选课表` 分别代表课程表和选课表的表名。该 SQL 语句会返回在课程表中存在但是在选课表中没有出现过的课程信息。
阅读全文