You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写从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,设置别名d
  • ON (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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:35:41