如何编写从SELECT语句取数插入目标表的MERGE语句
如何创建从SELECT语句取数并插入目标表的MERGE语句
MERGE语句可实现"匹配则更新、不匹配则插入"的逻辑,要实现从SELECT语句获取数据插入目标表,核心是在WHEN NOT MATCHED THEN的插入块中嵌套SELECT查询。以下是基于需求的示例说明:
示例代码
MERGE INTO employees t USING (SELECT :dept_id AS dept_id FROM dual) d ON (t.dept_id = d.dept_id) WHEN NOT MATCHED THEN INSERT (ename, fname) SELECT ename, fname FROM trans_emps WHERE trans_id = :trans_id;
代码说明
MERGE INTO employees t:指定目标操作表为employees,设置别名t简化引用USING (SELECT :dept_id AS dept_id FROM dual) d:定义匹配判断的数据源,通过dual表传入参数:dept_id,设置别名dON (t.dept_id = d.dept_id):匹配规则,检查目标表中是否存在与传入dept_id相同的记录WHEN NOT MATCHED THEN:当目标表中无匹配记录时,执行后续插入操作- 插入逻辑直接通过
SELECT从trans_emps表中筛选出trans_id匹配的记录,将ename和fname插入目标表(标准MERGE的INSERT无需重复写目标表名,原示例中的INSERT INTO employees属于冗余写法)
内容的提问来源于stack exchange,提问作者MOz
相关产品推荐
相关产品推荐

