【发布时间】:2020-04-24 15:34:12
【问题描述】:
我有一个要更新的 SQL 表
NAME Emp_ID Points TotalPoints
ABC 1 50 0
ABC 1 40 0
XYZ 2 20 0
LMN 3 30 0
LMN 3 50 0
XYZ 2 10 0
LMN 3 5 0
请帮我通过总结点来更新如下所示的同一张表
NAME Emp_ID Points TotalPoints
ABC 1 50 90
ABC 1 40 90
XYZ 2 20 30
LMN 3 30 85
LMN 3 50 85
XYZ 2 10 30
LMN 3 5 85
【问题讨论】:
-
这与使用不同表中的值进行更新没有什么不同。如果你能做到这一点,那么这也应该有效。到目前为止,您尝试过什么?
-
请参考Why should I “tag my RDBMS”?,这里写的是:'SQL'代表Structured Query Language,但它不是编程语言,像Python或C# 所以每个DBMS可能使用不同的 SQL 语法,我假设您想要适合您正在使用的 DBMS 的 SQL,对吧?此外,添加 DBMS 标签会吸引有使用该 DBMS 经验的人。
-
该表没有被规范化(如果点不是唯一的,那么没有候选键;
NAME依赖于Emp_ID并重复,TotalPoints也是如此(如果有一个候选关键,这将违反 2NF)),因此容易出现数据完整性问题。该表应首先规范化为附加表。之后,总分可以(例如)在视图中计算或通过触发器更新; “How best to recalculate group by values”解决了这个问题。
标签: sql