![](/img/trans.png)
[英]update a column in a sql table with a value from another table based on a relationship
[英]SQL Server Update Column based on value from another table
如果我应该使用触发器或过程,请提供帮助。 我试图更新ScaleRating
表GSelfAssessment
从GRatingScale
如果在得分GSelfAssessment
落在GRatingScale的最小值和最大值之间的分数。
最好在更新或插入时为每一行实现。 我相信SQL触发器是最合适的触发器。 研究完成后,我了解触发器中插入/删除的概念。 例如
CREATE TRIGGER [dbo].[TR_GSelfAssessment_update] ON [dbo].[GSelfAssessment]
FOR UPDATE
AS
BEGIN
UPDATE GSelfAssessment
SET GSelfAssessment.ScaleRating= (Select )---this is where i have a problem-----
END
我相信这里有Guru可以为我提供解决方案。 我会学到很多。
SQL Server支持计算列。 如果要使ScaleRating
始终与其余数据对齐,那么这是最好的方法:
alter table GSelfAssessment
add ScaleRating as ( . . . );
这将添加一个新的“列”,该列将在查询中使用该值时进行计算。 如果计算成本很高或您要建立索引,请使用persisted
因此该值实际上与其余数据一起存储-并在需要时重新计算。
您也可以在create table
语句中添加计算列。 如果已经创建了表,则可以删除该列并重新添加或修改它。
您不应该有该列。 在需要时加入评分表。 如果可以简化视图,则可以创建视图。
select …
from GSelfAssessment a
inner join
GRatingScale r
on (a.Score>r.MinScore and a.Score<=r.MaxScore)
根据需要调整/创建视图
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.