我记错什么,关键是这个模板表,所以我加错字段作为外键。现在我需要添加外键,我想基于一个已经填充此领域的其他来填充它的价值。我开始尝试用一个UPDATE语句要做到这一点,但我不知道该怎么做。

我的架构的部分:

产品表:

ProductName (key)
TemplateName
TemplateID
...

我已经添加TemplateID,但它在它没有数据尚未和可为空。

模板表:

TemplateID (key)
TemplateName
...

我要使用的模板表中查找在产品表中的每个TEMPLATENAME匹配TemplateID和填充在产品表的外键引用。

我可以做到这一点,在更新一个子查询,或者我需要写一些类型的存储过程的?我使用的是SQL Server 2008中

有帮助吗?

解决方案

您可以用一个简单的UPDATE查询做到这一点。

UPDATE Products
SET Products.TemplateID = Templates.TemplateID
FROM Templates
WHERE Templates.TemplateName = Products.TemplateName

您不需要在指定产品表FROM子句,也不JOIN子句。 只要指定模板表在FROM子句中。 你可以使用你的表名的UPDATE子句中使用WHERE子句中,从两个表相关recordds。

其他提示

这里的一个加入溶液。这是显著中,只有匹配的行会被更新。

Update p
Set p.TemplateId = t.TemplateId
From Products p
  join Templates t
  On p.TemplateName = t.TemplateName

这里的子查询的解决方案。产品的每一行都将被更新,即使没有匹配。

Update p
Set p.TemplateId =
(
  Select t.TemplateId
  From Templates t
  Where p.TemplateName = t.TemplateName
)
From Products p
update Templates
set TemplateId=Products.TemplateId
from Templates
inner join Products
   on Templates.TemplateName=Products.TemplateName
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top