gpt4 book ai didi

sql-server - SQL Server 合并语句

转载 作者:行者123 更新时间:2023-12-02 23:08:41 25 4
gpt4 key购买 nike

我正在我的存储过程中执行合并语句。我需要在更新和插入期间计算行数。如果我使用公共(public)变量来获取更新的行(对于更新和插入)我有什么不同,这是我从更新中获得的计数,这是我从插入中获得的计数。请给我一个更好的方法

最佳答案

您可以创建一个表变量来保存操作类型,然后向其OUTPUT$action列。

示例

/*Table to use as Merge Target*/
DECLARE @A TABLE (
[id] [int] NOT NULL PRIMARY KEY CLUSTERED,
[C] [varchar](200) NOT NULL)

/*Insert some initial data to be updated*/
INSERT INTO @A
SELECT 1, 'A' UNION ALL SELECT 2, 'B'

/*Table to hold actions*/
DECLARE @Actions TABLE(act CHAR(6))

/*Do the Merge*/
MERGE @A AS target
USING (VALUES (1, '@a'),( 2, '@b'),(3, 'C'),(4, 'D'),(5, 'E')) AS source (id, C)
ON (target.id = source.id)
WHEN MATCHED THEN
UPDATE SET C = source.C
WHEN NOT MATCHED THEN
INSERT (id, C)
VALUES (source.id, source.C)
OUTPUT $action INTO @Actions;

/*Check the result*/
SELECT act, COUNT(*) AS Cnt
FROM @Actions
GROUP BY act

返回

act    Cnt
------ -----------
INSERT 3
UPDATE 2

关于sql-server - SQL Server 合并语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5142954/

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