Sql 插入子查询can';t将引用绑定到目标表
我试图将一个表中的两列合并到一个外键引用中,该外键引用指向另一个包含这两列的表。我首先想做一些事情,比如:Sql 插入子查询can';t将引用绑定到目标表,sql,sql-server,tsql,where-clause,sql-insert,Sql,Sql Server,Tsql,Where Clause,Sql Insert,我试图将一个表中的两列合并到一个外键引用中,该外键引用指向另一个包含这两列的表。我首先想做一些事情,比如: INSERT INTO dbo.Securities (SubIndustID) SELECT ID FROM dbo.SubIndust WHERE dbo.SubIndust.GICS_Sector = dbo.Securities.GICS_Sector AND dbo.SubIndust.SubIndustry = dbo.Securiti
INSERT INTO dbo.Securities (SubIndustID)
SELECT ID FROM dbo.SubIndust
WHERE dbo.SubIndust.GICS_Sector = dbo.Securities.GICS_Sector
AND dbo.SubIndust.SubIndustry = dbo.Securities.SubIndustry;
对于目标表中某列的子查询中的每个引用,我都会收到一条错误消息:
无法绑定多部分标识符“dbo.Securities.GICS\u Sector”。
无法绑定多部分标识符“dbo.Securities.SubIndustry”。
为什么进行外键替换的正确方法是?如果要在查询中的其他位置使用该表,则需要在
from
子句中提及该表。这将是一个语法更正确的版本:
INSERT INTO dbo.Securities (SubIndustID)
SELECT i.ID
FROM dbo.SubIndust i JOIN
dbo.Securities s
ON i.GICS_Sector = s.GICS_Sector AND
i.SubIndustry = s.SubIndustry;
但是,我怀疑您确实需要更新:
update s
set s.SubIndustID = i.Id
from dbo.Securities s JOIN
dbo.SubIndust i
on i.GICS_Sector = s.GICS_Sector AND
i.SubIndustry = s.SubIndustry;
伟大的(当然,您也正确地认为这实际上应该是一个UPDATE语句。