sql查询所有未选修了c2课程的学生姓名
时间: 2023-11-24 22:52:35 浏览: 278
以下是两种查询所有未选修了c2课程的学生姓名的SQL语句:
1. 采用not in的方法
```sql
SELECT S.sname
FROM S
WHERE S.sno NOT IN (
SELECT SC.sno
FROM SC
WHERE SC.cno = 'c2'
);
```
2. 采用not exists的方法
```sql
SELECT S.sname
FROM S
WHERE NOT EXISTS (
SELECT *
FROM SC
WHERE SC.sno = S.sno AND SC.cno = 'c2'
);
```
相关问题
查询一,按要求写出对应的sql语句(1)查询选修了课程的学生总人数 (2)查询选修了cl课程的最高成绩和最低成绩。 (3)查询选修了c2课程且该课程成绩在60到90分之间的学生人数。 (4)查询选修了‘c2’号课程的学生的学号及其成绩,查询结果按成绩降序排列。
假设我们有一个名为`students`的表,包含字段`student_id`、`course_id`和`score`,以及一个名为`courses`的表,包含字段`course_id`和`course_name`。以下是对应的SQL语句:
1. 查询选修了课程的学生总人数:
```sql
SELECT COUNT(DISTINCT s.student_id)
FROM students s
JOIN courses c ON s.course_id = c.course_id;
```
2. 查询选修了`cl`课程的最高成绩和最低成绩:
```sql
SELECT MAX(s.score) AS max_score, MIN(s.score) AS min_score
FROM students s
JOIN courses c ON s.course_id = c.course_id
WHERE c.course_name = 'cl';
```
3. 查询选修了`c2`课程且成绩在60到90分之间的学生人数:
```sql
SELECT COUNT(*)
FROM students s
JOIN courses c ON s.course_id = c.course_id
WHERE c.course_name = 'c2'
AND s.score BETWEEN 60 AND 90;
```
4. 查询选修了`c2`号课程的学生的学号及其成绩,按成绩降序排列:
```sql
SELECT s.student_id, s.score
FROM students s
JOIN courses c ON s.course_id = c.course_id
WHERE c.course_id = 'c2'
ORDER BY s.score DESC;
```
SQL检索选修课程C2的学生中成绩最高的学生的姓名和学号
您好!根据您的问题,我可以为您提供以下 SQL 查询语句:
SELECT 学号, 姓名
FROM 学生
WHERE 学号 IN (
SELECT 学号
FROM 选修
WHERE 课程编号 = 'C2'
AND 成绩 = (
SELECT MAX(成绩)
FROM 选修
WHERE 课程编号 = 'C2'
)
);
这将返回选修课程 C2 的学生中,成绩最高的学生的姓名和学号。如果您有其他问题,请继续提出。
阅读全文