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语句可以很方便地将两个表中的数据合并到一起,从而实现数据的更新、插入和删除操作。