gpt4 book ai didi

sql - 输出 Inserted.Id 和另一个字段

转载 作者:行者123 更新时间:2023-12-04 02:11:48 25 4
gpt4 key购买 nike

我有以下查询:

DECLARE @OutProduct TABLE 
(
ProductID INT,
BulkProductId INT
)

INSERT INTO dbo.Products
( EanCode ,
ChangedDateTime ,
ChangedById ,
Deleted
)
OUTPUT INSERTED.ID, BulkProducts.Id INTO @OutProduct (ProductID, BulkProductId)
SELECT EanCode ,
GETDATE(),
GETDATE(),
0
FROM dbo.BulkProducts
WHERE ProductId is NULL

假设 Products.IdBulkProducts.Id 是自动递增的标识列:

我要实现的目标:

@OutProduct 临时表包含由刚刚插入的 Products.IdBulkProducts 中的行 ID 组成的元组。

我偶然发现:BulkProducts.Id 不能用在 OUTPUT INSERTED.ID, BulkProducts.Id INTO 语句中,因为它不是有效语法。

我该如何解决这个问题?

编辑:我使用的是 SQL Server 2012。

最佳答案

您可能想要探索MERGE:

MERGE INTO dbo.Products
USING dbo.BulkProducts AS src
ON 1 = 0 -- Never match
WHEN NOT MATCHED THEN
INSERT(EanCode, ChangedDateTime, ChangedById, Deleted)
VALUES(src.EanCode, GETDATE(), GETDATE(), 0)
OUTPUT
inserted.Id,
src.Id
INTO @OutProduct;

引用:

Dr. OUTPUT or: How I Learned to Stop Worrying and Love the MERGE by Adam Machanic

关于sql - 输出 Inserted.Id 和另一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37339422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com