计算成绩表中学生总成绩并填入原来的Score表中,已知有student course表
用个视图执行效率高一点:
CREATE VIEW student_total_score AS
SELECT student.id AS student_id, SUM(score.score) AS total_score
FROM student
JOIN score ON student.id = score.student_id
GROUP BY student.id;
UPDATE score
SET total_score = student_total_score.total_score
FROM student_total_score
WHERE score.student_id = student_total_score.student_id;
update 学生表 set 总成绩=(select sum(成绩) from 成绩表 where 学生id = 某个学生的id) where 学生id = 某个学生的id
不知道你这个问题是否已经解决, 如果还没有解决的话:create table Course
(
Cno char(7) primary key,
Cname varchar(30), -- nvarchar(30)30个汉字 60个英文字母
Ccredit int , -- numeric(2,1),几点几
// 外键的创建 有两种形式,表级约束和列级约束
//Cpno取值参照了Course表Cno的值
-- 表级约束
Cpno char(7),
foreign key(Cpno) references Course(Cno),
-- 列级约束
Cpno char(7) references Course(Cno)
)
我可以使用以下 SQL 语句计算学生的总成绩并将结果填入原始的 Score 表中:
UPDATE Score SET total_score = (SELECT SUM(score) FROM Score WHERE student_id = Student.id ) FROM Score INNER JOIN Student ON Score.student_id = Student.id INNER JOIN Course ON Score.course_id = Course.id;
注释: - 首先使用 INNER JOIN 将 Score 表和 Student 表以及 Course 表连接起来。 - 接着使用子查询计算学生的总成绩并更新 Score 表的 total_score 字段。 - 注意要使用别名来指定表的具体字段。