向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“”课程的同学学号、课程的平均成绩;
时间: 2023-12-26 19:05:59 浏览: 229
学生信息管理系统,1、每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩。
可以使用以下的SQL语句向SC表中插入符合条件的记录:
```
INSERT INTO SC (Sid, Cid, score)
SELECT s.Sid, c.Cid, AVG(sc.score)
FROM Student s, Course c
LEFT JOIN SC sc ON s.Sid = sc.Sid AND c.Cid = sc.Cid
WHERE c.Cid <> '""'
AND NOT EXISTS (
SELECT *
FROM SC sc1
WHERE s.Sid = sc1.Sid AND c.Cid = sc1.Cid
)
GROUP BY s.Sid, c.Cid
HAVING AVG(sc.score) IS NOT NULL;
```
这个SQL语句中的""是一个占位符,实际使用时需要替换成具体的课程ID。
实现的思路是,首先通过LEFT JOIN将学生表、课程表和成绩表联结起来,找到所有学生和课程的组合,如果该组合在SC表中不存在,则说明这个学生没有上过这门课程。然后通过子查询和集合操作,找到平均成绩不为空的组合,最后将这些组合插入到SC表中。
阅读全文