如何在 SQL 中包含带有 OUTPUT 的参考列
How to include a reference column with the OUTPUT in SQL
我有一个引用 TableA,其中有一个名为 [SomeID]:
的列
SomeID
ABC
DEF
GHI
KLM
我有TableB 可以是:
CREATE TABLE TableB([ID] BIGINT, [Name] NVARCHAR(50))
[ID]为主键,自增
我想在 TableB 中为 TableA 的每条记录创建一条新记录。
所以我们这样做:
DECLARE @OuputTable TABLE([ID] BIGINT, [SomeID] NVARCHAR(50))
INSERT INTO TableB([Name])
OUTPUT INSERTED.[ID], 'Need Associated SomeID From TableA Here' INTO @OutputTable
SELECT 'ZZZZZZ' -- Edited this line to remove some possible confusion.
FROM TableA
SELECT *
FROM
@OuputTable
如何在不使用循环?
您可以尝试使用 MERGE INTO
,这可能允许您在 OUTPUT
中获取源数据值
MERGE INTO TableB AS dest
USING TableA AS sou ON 1=0
WHEN NOT MATCHED
THEN INSERT ([Name])
VALUES (sou.[SomeID])
OUTPUT INSERTED.[ID], sou.SomeID
INTO @OutputTable (ID, SomeID);
我有一个引用 TableA,其中有一个名为 [SomeID]:
的列SomeID |
---|
ABC |
DEF |
GHI |
KLM |
我有TableB 可以是:
CREATE TABLE TableB([ID] BIGINT, [Name] NVARCHAR(50))
[ID]为主键,自增
我想在 TableB 中为 TableA 的每条记录创建一条新记录。
所以我们这样做:
DECLARE @OuputTable TABLE([ID] BIGINT, [SomeID] NVARCHAR(50))
INSERT INTO TableB([Name])
OUTPUT INSERTED.[ID], 'Need Associated SomeID From TableA Here' INTO @OutputTable
SELECT 'ZZZZZZ' -- Edited this line to remove some possible confusion.
FROM TableA
SELECT *
FROM
@OuputTable
如何在不使用循环?
您可以尝试使用 MERGE INTO
,这可能允许您在 OUTPUT
MERGE INTO TableB AS dest
USING TableA AS sou ON 1=0
WHEN NOT MATCHED
THEN INSERT ([Name])
VALUES (sou.[SomeID])
OUTPUT INSERTED.[ID], sou.SomeID
INTO @OutputTable (ID, SomeID);