【发布时间】:2023-03-20 20:09:01
【问题描述】:
我有一个表格可以衡量我的数据库中student 的学生表现,如下所示:
ID TestDate PerformanceStatus (PS)
1 15/03/2016 0
1 01/04/2016 2
1 05/05/2016 1
1 07/06/2016 1
2 15/03/2016 0
2 01/04/2016 2
2 05/05/2016 1
2 07/06/2016 3
2 23/08/2016 1
我想更新我的表以拥有一个新列 PreviousPerformanceStatus。
此 PreviousPerformanceStatus 是根据监控的 performanceStatus 计算得出的,如下所示:
注意:如果在TestDate之前没有记录performanceStatus,我想做PreviousPerformanceStatus = PerformanceStatus
ID TestDate PS PreviousPerformanceStatus
1 15/03/2016 0 0
1 01/04/2016 2 0
1 05/05/2016 1 2
1 07/06/2016 1 1
2 15/03/2016 0 0
2 01/04/2016 2 0
2 05/05/2016 1 2
2 07/06/2016 3 1
2 23/08/2016 1 3
如何更新我的 SQL 表?我应该使用加入吗? 谢谢。
【问题讨论】:
-
逻辑不清楚(或者您可能有错字)。你能解释一下规则是什么吗?
-
这里有一个提示:首先,编写一个返回结果的查询(一个 SELECT 语句)。是的,JOIN 操作是实现结果的一种方法。或者,您可以使用相关子查询。一旦有了 SELECT 语句,就可以将其转换为 UPDATE 语句。
-
我们以 ID=1 的学生为例。 previousPerformanceStatus 是根据“较早”测试日期的 PerformanceStatus 计算的。所以当 TestDate=01/04/2016 时,我想使用 TestDate=15/03/2016 的数据。但是,如果我找不到任何以前的数据,我将使用 PerformanceStatus 中的值默认 PreviousPerformanceStatus