【发布时间】:2021-04-09 14:59:04
【问题描述】:
我在 MySQL 中有两个表。我将它们称为 grade7 和 grade8。两个表都有所有这些字段,StudentID、FirstName、LastName、Total_Score、mathScore 和 scienceScore。两个表中都是学生姓名,但 grade7 中的 StudentID 与 grade8 中的不同,尽管 FirstName em> 和 LastName 是统一的(同一个人)。我要做的是总结同一学生的 grade7 和 grade8 的分数。意思是,用 FirstName 和 LastName 在 grade7 中的记录的分数相加等于 FirstName 和 grade8 中的 em>姓氏。我下面的代码最初在没有分数时有效。但是,如果已经有分数,它似乎增加了比应该添加的分数。假设它应该输出 70 作为 Total_Score,它将再增加 10 分并输出 80。请查看我的代码并建议我应该做什么。谢谢。
update grade8 o inner join
(
SELECT op.StudentID
sum(ot.Total_Score) as Total_Score_ot
sum(ot.Maths) as Maths_ot
sum(op.Total_Score) as Total_Score_op
sum(op.Maths) as Maths_op
FROM grade7 ot inner join grade8 op
WHERE ot.FirstName = op.FirstName AND ot.LastName = op.LastName
GROUP BY op.FirstName
) as o1
SET Total_Score=Total_Score_op + Total_Score_ot
Maths=Maths_op + Maths_ot
【问题讨论】:
-
不确定你的确切问题,但如果你在一个年级有名字,但在另一个年级没有名字,那就不行了。
union可能更合适 -
抱歉,如果我没有把我的问题说清楚。两个表中的所有字段都是统一的。所以我在 8 年级和 7 年级都有 FirtsName
-
请在更新前和后为所有表添加示例数据。
-
请参考我刚刚上传的图片。与原来的问题。它显示了带有样本数据的grade7表,以及更新前后的带有样本数据的grade8表。我希望你明白这一点。谢谢。
-
两个学生不能同名的想法似乎太乐观了