先决条件——插入、更新、删除
SQL 中的MERGE命令实际上是三个 SQL 语句的组合: INSERT、UPDATE 和 DELETE 。简而言之,SQL 中的 MERGE 语句提供了一种将所有这三个操作一起执行的便捷方法,这在处理大型运行数据库时非常有用。但与 INSERT、UPDATE 和 DELETE 语句不同,MERGE 语句需要一个源表来对称为目标表的所需表执行这些操作。
现在我们知道 SQL 中的 MERGE 需要两张表:一张是我们要执行 INSERT、UPDATE 和 DELETE 操作的目标表,另一张是源表,其中包含目标表的新修改和正确数据,实际上是与实际目标表进行比较,以便对其进行修改。
换句话说,SQL 中的 MERGE 语句基本上是根据指定的条件将数据从源结果集合并到目标表。 MERGE 语句的语法一开始可能很难理解,但一旦你知道它的意思就很容易了。所以,不要混淆,让我们先讨论一些基础知识。假设您有两个表:源表和目标表,现在考虑是否要借助提供的包含最新详细信息的源表在所需的目标表中进行更改。
- 什么时候需要在目标表中插入数据?
显然,当源表中有数据而目标表中没有数据时,即数据与目标表不匹配时。 - 什么时候需要更新数据?
当源表中的数据与目标表匹配但主键以外的任何条目不匹配时。 - 什么时候需要删除数据?
当目标表中有数据而源表中没有数据时,即数据与源表不匹配时。
现在,我们知道何时使用 INSERT、UPDATE 和 DELETE 语句,以防我们想使用 MERGE 语句,因此您理解下面给出的语法应该没有问题:
//.....syntax of MERGE statement....//
//you can use any other name in place of target
MERGE target_table_name AS TARGET
//you can use any other name in place of source
USING source_table_name AS SOURCE
ON condition (for matching source and target table)
WHEN MATCHED (another condition for updation)
//now use update statement syntax accordingly
THEN UPDATE
WHEN NOT MATCHED BY TARGET
//now use insert statement syntax accordingly
THEN INSERT
WHEN NOT MATCHED BY SOURCE
THEN DELETE;
这就是 MERGE 语句及其语法的全部内容。
参考 –
合并 – docs.microsoft
合并 – docs.oracle