带子查询的INSERT无法绑定对目标表的引用

时间:2014-12-22 02:51:53

标签: 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.Securities.SubIndustry;

我在子查询中的每个引用都会收到一条错误消息,指向目标表中的一列:

多部分标识符" dbo.Securities.GICS_Sector"无法绑定。

多部分标识符" dbo.Securities.SubIndustry"无法绑定。

为什么正确的方法来进行外键替换?

1 个答案:

答案 0 :(得分:2)

如果要在查询中的其他位置使用它,则需要在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;