SQL Server Merge语句的用法
SQL Server Merge语句是SQL Server数据库提供的一种数据库操作语句,它可以将两个表中的数据合并到一起,从而实现数据的更新、插入和删除操作。Merge语句的语法格式如下:
MERGE [TargetTable]
USING [SourceTable]
ON [JoinCondition]
WHEN MATCHED THEN
[UPDATE Clause]
WHEN NOT MATCHED THEN
[INSERT Clause]
WHEN NOT MATCHED BY SOURCE THEN
[DELETE Clause];
其中,[TargetTable]表示要更新的目标表,[SourceTable]表示要更新的源表,[JoinCondition]表示源表和目标表的连接条件,[UPDATE Clause]表示当源表和目标表的连接条件匹配时要执行的更新操作,[INSERT Clause]表示当源表和目标表的连接条件不匹配时要执行的插入操作,[DELETE Clause]表示当源表中有,而目标表中没有的数据时要执行的删除操作。
SQL Server Merge语句的示例
下面举例说明如何使用Merge语句。假设有两个表,一个是员工信息表EmployeeInfo,另一个是员工薪资表EmployeeSalary,要求实现将EmployeeSalary表中的数据更新到EmployeeInfo表中。
-- 创建员工信息表EmployeeInfo
CREATE TABLE EmployeeInfo(
ID INT PRIMARY KEY,
Name VARCHAR(20) NOT NULL,
Salary INT
);
-- 创建员工薪资表EmployeeSalary
CREATE TABLE EmployeeSalary(
ID INT PRIMARY KEY,
Salary INT
);
-- 向EmployeeInfo表插入数据
INSERT INTO EmployeeInfo(ID, Name, Salary)
VALUES(1, 'Tom', 1000), (2, 'Jerry', 2000);
-- 向EmployeeSalary表插入数据
INSERT INTO EmployeeSalary(ID, Salary)
VALUES(1, 1500), (2, 2500);
-- 使用Merge语句更新EmployeeInfo表
MERGE EmployeeInfo AS T
USING EmployeeSalary AS S
ON T.ID = S.ID
WHEN MATCHED THEN
UPDATE SET T.Salary = S.Salary
WHEN NOT MATCHED THEN
INSERT (ID, Name, Salary)
VALUES(S.ID, '', S.Salary);
-- 查询EmployeeInfo表
SELECT * FROM EmployeeInfo;
上面的代码执行后,EmployeeInfo表中的数据如下:
- ID:1,Name:Tom,Salary:1500
- ID:2,Name:Jerry,Salary:2500
可以看到,使用Merge语句可以很方便地将两个表中的数据合并到一起,从而实现数据的更新、插入和删除操作。