簡體   English   中英

sql輸出子句錯誤

[英]sql output clause error

t1有一個自動生成的主鍵,稱為pkId

INSERT INTO t1( title, summary)
OUTPUT inserted.pkId, t2.id INTO @IdTable(New_Id, Old_Id)
SELECT t2.title, t2.summary
FROM t2

有人可以告訴我為什么這行不通嗎?

我收到錯誤消息無法綁定多部分標識符“ t2.id”。

您無法在INSERT的OUTPUT子句中從t2獲得值(可以進行UPDATE和DELETE)。

從MSDN:

from_table_name

是列前綴,用於指定DELETE,UPDATE或MERGE語句的FROM子句中包含的表,該表用於指定要更新或刪除的行。

請注意,未提及INSERT

你必須

  • 如果您使用的是SQL Server 2008+,請嘗試MERGE (對不起)
  • 使用另一列,稍后再加入。

來自評論

它不起作用,因為您沒有在SELECT語句中選擇t2.id。 為了使其正常工作,您應該在語句中添加t2.id,但這還需要您在t1中插入此ID(我假設這不是您所需要的)。 我仍在思考如何優雅地解決該問題。

這不是一個優雅的解決方案,但最簡單的方法是

  • 將虛擬的t2ID列添加到t1
  • 更改您的INSERT以包括t2ID (不使用OUTPUT子句)
  • 選擇所有新值到您的@IdTable
  • 刪除虛擬列

SQL腳本

ALTER TABLE t1 ADD COLUMN t2ID INTEGER NULL
GO

INSERT INTO t1( title, summary, t2ID)
SELECT t2.title, t2.summary, t2.ID
FROM t2

INSERT INTO @IdTable
SELECT pkID, t2ID
FROM   t1
WHERE  t2ID IS NOT NULL
GO

ALTER TABLE t1 DROP COLUMN t2ID
GO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM