【问题标题】:SQL Server INSERT-OUTPUT including column from other tableSQL Server INSERT-OUTPUT 包括来自其他表的列
【发布时间】:2020-04-06 04:16:11
【问题描述】:

我需要将数据插入到表中,并且需要从目标表中输出新插入的 ID,并与源表中的 ID 一起映射。 我有以下查询:

DECLARE @mapping TABLE(
            DestId int,
            SourceId int);


INSERT INTO dest_table (column1, column2)
OUTPUT INSERTED.Id as DestId, src_table.Id as SourceId   INTO @mapping 
SELECT 
    src_table.column1,
    src_table.column2

FROM src_table

这给出了以下错误:

The multi-part identifier "src_table.Id" could not be bound.

通常,我会使用MERGE 语句。但是在这种情况下,它必须在 SQL Server 2005 上运行!!!

有没有办法在不解析光标并一一插入值的情况下实现这一点?

【问题讨论】:

    标签: sql sql-server tsql sql-server-2005


    【解决方案1】:

    它看起来像一个错字。该表是src_table1(末尾有1),而别名使用src_table(末尾没有1)。您可以将别名添加到表中吗?

    DECLARE @mapping TABLE(
                DestId int,
                SourceId int);
    
    
    INSERT INTO dest_table (column1, column2)
    OUTPUT INSERTED.Id as DestId, src_table.Id as SourceId   INTO @mapping 
    SELECT 
        src_table.column1,
        src_table.column2
    
    FROM src_table1 src_table
    

    【讨论】:

    • 糟糕,感谢您指出这一点!错字只是在我的问题中!该表实际上是 src_table。更正的表名仍然是一个问题。我已经编辑了我的问题。
    猜你喜欢
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 2017-03-20
    • 1970-01-01
    相关资源
    最近更新 更多