gpt4 book ai didi

json - 对 JSON 数据使用 MERGE 命令

转载 作者:行者123 更新时间:2023-12-01 13:14:52 24 4
gpt4 key购买 nike

是否可以直接使用 JSON 更新表,而不插入临时表?

以下代码将数据插入临时表并更新原始表。

DECLARE @TempTelecommunicationsNumber AS TABLE (RoleID INT,Number VARCHAR(100),Ext VARCHAR(100))
INSERT INTO @TempTelecommunicationsNumber (RoleID,Number,Ext)
SELECT @RoleID, Number,Ext
FROM OPENJSON(@TelecommunicationsNumber)
WITH (RoleID INT, Number NVARCHAR(256), Ext NVARCHAR(256))

MERGE Party.TelecommunicationsNumber original
USING @TempTelecommunicationsNumber modified
ON (original.RoleID = modified.RoleID)
WHEN MATCHED
THEN UPDATE SET
original.Number = modified.Number,
original.Ext = modified.Ext
WHEN NOT MATCHED BY TARGET
THEN INSERT (RoleID,Number,Ext)
VALUES (@RoleID,modified.Number,modified.Ext);

有没有办法直接更新如下。

MERGE Party.TelecommunicationsNumber original
USING OPENJSON(@Json) modified
ON (original.RoleID = modified.RoleID)
WHEN MATCHED
THEN UPDATE SET
original.Number = modified.Number,
original.Ext = modified.Ext
WHEN NOT MATCHED BY TARGET
THEN INSERT (RoleID,Number,Ext)
VALUES (@RoleID,modified.Number,modified.Ext);

最佳答案

是的,例如通过使用公用表表达式是可能的:

WITH cte AS (
SELECT @RoleID AS RoleID, Number,Ext
FROM OPENJSON(@TelecommunicationsNumber)
WITH (RoleID INT, Number NVARCHAR(256), Ext NVARCHAR(256))
)
MERGE Party.TelecommunicationsNumber original
USING cte modified
ON (original.RoleID = modified.RoleID)
WHEN MATCHED
THEN UPDATE SET
original.Number = modified.Number,
original.Ext = modified.Ext
WHEN NOT MATCHED BY TARGET
THEN INSERT (RoleID,Number,Ext)
VALUES (@RoleID,modified.Number,modified.Ext);

db<>fidde demo

或:

MERGE Party.TelecommunicationsNumber original
USING (SELECT @RoleID AS RoleID, Number,Ext
FROM OPENJSON(@TelecommunicationsNumber)
WITH (RoleID INT, Number NVARCHAR(256), Ext NVARCHAR(256))) modified
ON (original.RoleID = modified.RoleID)
WHEN MATCHED
THEN UPDATE SET
original.Number = modified.Number,
original.Ext = modified.Ext
WHEN NOT MATCHED BY TARGET
THEN INSERT (RoleID,Number,Ext)
VALUES (@RoleID,modified.Number,modified.Ext);

关于json - 对 JSON 数据使用 MERGE 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56105872/

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