用sql sever写

计算成绩表中学生总成绩并填入原来的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

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7493805
  • 这篇博客你也可以参考下:数据库系统概论Sql 练习表student、sc、course
  • 除此之外, 这篇博客: sql sever 使用命令创建表中的 创建课程表Course 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    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) 
    )
    
  • 以下回答来自chatgpt:

    我可以使用以下 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 字段。 - 注意要使用别名来指定表的具体字段。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^