gpt4 book ai didi

MYSQL 更新表错误

转载 作者:行者123 更新时间:2023-11-29 21:44:59 25 4
gpt4 key购买 nike

我想对列total进行一些计算通过添加特定的两个标记列std_id

例如30+25=55,std_id 32的total=55

+--------+-----------+-------+----+----------------+-------+    
| std_id | course_id | marks | mp | subject | total |
+--------+-----------+-------+----+----------------+-------+
| 32 | 40 | 30.00 | 22 | Elective Maths | 0 |
| 32 | 40 | 25.00 | 12 | Elective Maths | 0 |
| 39 | 40 | 30.00 | 22 | Elective Maths | 0 |
| 39 | 40 | 20.00 | 12 | Elective Maths | 0 |
+--------+-----------+-------+----+----------------+-------+

我尝试过类似的事情

update student_reports 
set total= sum(marks)
where std_id=std_id;

但不起作用,非常感谢任何帮助,尤其是不需要更改表结构的帮助

对于上面的第一个表,使用单个 course_id,代码由 GILEYS 完美计算出总数

更新学生报告 r, ( 选择 std_id, sum(marks) 作为总计 来自学生报告 按 std_id 分组) t设置 r.total = t.total其中 r.std_id = t.std_id;

我的下一个问题是,如果我添加另一个 course_id 值,使其(40,43) 为表格,我怎样才能得到新的总计

+--------+------------+--------+----+------------ ----+--------+

|标准 ID |类(class) ID |标记|议员 |主题 |总计 |

+--------+------------+--------+----+------------ ----+--------+

| 32 | 32 40 | 40 30:00 | 22 | 22选修数学| 0 |

| 32 | 32 40 | 40 25:00 | 12 | 12选修数学| 0 |

| 39 | 39 40 | 40 30:00 | 22 | 22选修数学| 0 |

| 39 | 39 40 | 40 20:00 | 12 | 12选修数学| 0 |

| 32 | 32 43 | 43 40.00 | 22 | 22核心数学| 0 |

| 32 | 32 43 | 43 20:00 | 12 | 12核心数学| 0 |

| 39 | 39 43 | 43 45.00 | 22 | 22核心数学| 0 |

| 39 | 39 43 | 43 40.00 | 12 | 12核心数学| 0 |

+--------+------------+--------+----+------------ ----+--------+

我尝试过类似的事情

更新学生报告 r,(选择 std_id、类(class) ID、主题、总和(分数)来自 Student_reports 组的总计(按 std_id) t set r.total = t.total其中 r.std_id = t.std_id AND r.course_id=t.course_id AND r.subject=t.subject;

但没有像我专家那样给出总数,请需要再次得到您的帮助

达到下面想要的结果

+--------+------------+--------+----+------------ ----+--------+

|标准 ID |类(class) ID |标记|议员 |主题 |总计 |

+--------+------------+--------+----+------------ ----+--------+

| 32 | 32 40 | 40 30:00 | 22 | 22选修数学| 55 |

| 32 | 32 40 | 40 25:00 | 12 | 12选修数学| 55 |

| 39 | 39 40 | 40 30:00 | 22 | 22选修数学| 50 |

| 39 | 39 40 | 40 20:00 | 12 | 12选修数学| 50 |

| 32 | 32 43 | 43 40.00 | 22 | 22核心数学| 60 |

| 32 | 32 43 | 43 20:00 | 12 | 12核心数学| 60 |

| 39 | 39 43 | 43 45.00 | 22 | 22核心数学| 95 |

| 39 | 39 43 | 43 40.00 | 12 | 12核心数学| 95 |

+--------+------------+--------+----+------------ ----+--------+

最佳答案

试试这个:

update student_reports 
set total = (
select sum(marks)
from student_reports
where std_id = 32
)
where std_id = 32;

或者如果您希望更新整个表格:

    update student_reports 
set total = t.total
from (
select std_id, sum(marks) as total
from student_reports
group by std_id
) t
where t.std_id = student_reports.std_id;

编辑一下,上面的方法可能在MySQL上不起作用,你可以尝试以下方法:

update student_reports r, (
select std_id, sum(marks) as total
from student_reports
group by std_id
) t
set r.total = t.total
where r.std_id = t.std_id;

关于MYSQL 更新表错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34184007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com