MERGE INTO语句用于将一个表的数据插入到另一个表中,同时可以根据条件进行更新操作。在处理复杂逻辑时,可以结合使用WHEN MATCHED、WHEN NOT MATCHED等子句来实现不同的条件判断和操作。
以下是一个示例,假设有两个表table1和table2,我们要将table1的数据插入到table2中,如果table2中已存在相同的数据,则更新表中的字段值:
MERGE INTO table2 t2
USING table1 t1
ON (t1.id = t2.id)
WHEN MATCHED THEN
UPDATE SET t2.name = t1.name, t2.age = t1.age
WHEN NOT MATCHED THEN
INSERT (id, name, age) VALUES (t1.id, t1.name, t1.age);
在上面的例子中,我们首先将table1和table2作为源表和目标表,使用ON子句指定两个表的关联条件。当源表和目标表中的id字段相同时,使用WHEN MATCHED子句更新目标表中的name和age字段值。如果没有匹配的记录,则使用WHEN NOT MATCHED子句将源表的数据插入到目标表中。
通过合理的结合使用WHEN MATCHED、WHEN NOT MATCHED等子句,可以实现更为复杂的逻辑处理,满足不同场景下的需求。