问题描述
我正在使用 sql Server 并希望进行批量更新,但如果已存在相同的值,则不希望重新更新任何行。
例如考虑以下表格及其数据
DECLARE @UpdatedIds TABLE
(
BookId INT
)
CREATE TABLE Book
(
[Id] INT,[Name] NVARCHAR(MAX)
)
INSERT INTO Book([Id],[Name])
SELECT 1,'Book1'
UNION
SELECT 2,'Book2'
UNION
SELECT 3,'Book3'
UNION
SELECT 4,'Book4'
UNION
SELECT 5,'Book5'
CREATE TABLE #Book
(
[Id] INT,[Name] NVARCHAR(MAX)
)
INSERT INTO #Book([Id],'Book1_Changed'
UNION
SELECT 2,'Book2_Changed'
UNION
SELECT 3,'Book5'
我想要的是当我运行以下查询时
UPDATE [BO]
SET [Name] = [BU].[Name]
OUTPUT [INSERTED].[Id] INTO @UpdatedIds([BookId])
FROM [Book] [BO]
INNER JOIN #Book [BU] ON [BO].[Id] = [BU].[Id]
SELECT * FROM @UpdatedIds
@UpdatedIds 应该有 1 和 2 的记录,而不是 3、4 或 5
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)