gpt4 book ai didi

python - 在 SQL Server 中对相同的源/目标表使用 MERGE

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:14 24 4
gpt4 key购买 nike

我想通过我的 python 程序对表执行更新插入。我找到了 MERGE 命令,但它似乎专门用于合并两个表。我想通过一个查询将一个字段更新/插入到一个表中。

我想要比 DELETE 然后 INSERT 或 SELECT 然后 [INSERT/UPDATE] 更快的东西,我正在尝试让 MERGE 工作。但是,当我在 SSMS 中运行它时,它正在更新数据库表中的所有行。

查询是:

MERGE INTO [LastPriceUpdate] USING 
(SELECT [EventID] FROM [LastPriceUpdate] where [EventID] = 1501845) AS source
ON (source.[EventID] = 1501845)
WHEN MATCHED THEN UPDATE SET [LastPriceUpdate] = getdate() -- where clause not allowed
WHEN NOT MATCHED BY TARGET THEN INSERT ([EventID], [LastPriceUpdate]) VALUES (1501845, getdate());

该查询更新所有行,我只希望它使用 getdate() 更新 LastPriceUpdate 列,其中 EventID = {somenumber}

可能的答案:这可能是一个修复;在 ON 部分使用目标。

MERGE INTO [LastPriceUpdate] AS target USING 
(SELECT [EventID] FROM [LastPriceUpdate] where [EventID] = 1501845) AS source
ON (target.[EventID] = 1501845)
WHEN MATCHED THEN UPDATE SET [LastPriceUpdate] = getdate() -- where clause not allowed
WHEN NOT MATCHED BY TARGET THEN INSERT ([EventID], [LastPriceUpdate]) VALUES (1501845, getdate());

最佳答案

我认为您正在寻找这样的东西。

MERGE INTO LastPriceUpdate as lpu
USING (
SELECT getdate() as LastPriceUpdate,
1501845 as EventID
) AS src
ON lpu.EventID = src.EventID
WHEN MATCHED THEN
UPDATE SET LastPriceUpdate = src.LastPriceUpdate
WHEN NOT MATCHED BY TARGET THEN
INSERT (EventID, LastPriceUpdate)
VALUES (src.EventID, src.LastPriceUpdate);

关于python - 在 SQL Server 中对相同的源/目标表使用 MERGE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9515447/

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