SQL如何使用Merge将一个上传的表与另一个表对比并更新

暗香疏影 创作者

如果我上传了一个表,那么我要如何将这个表和另一个表对比并直接更新呢?

SQL Merge

SQL Shack Merge
答案是使用SQL Merge函数。

SQL 核对并更新

我们先用参考网站的举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
USE SqlShackMergeDemo
GO

MERGE TargetProducts AS Target
USING SourceProducts AS Source
ON Source.ProductID = Target.ProductID

-- For Inserts
WHEN NOT MATCHED BY Target THEN
INSERT (ProductID,ProductName, Price)
VALUES (Source.ProductID,Source.ProductName, Source.Price)

-- For Updates
WHEN MATCHED THEN UPDATE SET
Target.ProductName = Source.ProductName,
Target.Price = Source.Price;

例如我们需要更新PeopleEmailList这个表,这表里有100个人,但是我上传的临时表里只有15个人(需要修改)。
且我们Source的表是需要先和别的表合并展示才可以的,那么我们需要先Join查询并加上括号:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

MERGE PeopleEmailList

USING(
Select bi.PeopleID, bi.Surname, bi.ForeName,bi.PreferredForeName,bi.PreferredSurname
,import.EmployeeID
,import.EmailAddress
From BasicInformation bi
Inner Join ztemp_20220901 as import on bi.PeopleID = import.EmployeeID
) AS Base on Base.PeopleID = PeopleEmailList.PeopleID

When MATCHED THEN
Update
Set PeopleEmailList.EmailID = Base.EmailAddress;
  • 标题: SQL如何使用Merge将一个上传的表与另一个表对比并更新
  • 作者: 暗香疏影
  • 创建于 : 2022-09-02 00:00:00
  • 更新于 : 2022-09-02 00:00:00
  • 链接: https://blog.23ikr.com/2022/09/02/2022-09-02-SQL-Merge/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
SQL如何使用Merge将一个上传的表与另一个表对比并更新