merge into copy_emp1 c
  using employees e
  on (c.employee_id=e.employee_id)
when matched then
  update set
  c.first_name=e.first_name,
  c.last_name=e.last_name,
  c.email=e.email,
  c.phone_number=e.phone_number,
  c.hire_date=e.hire_date,
  c.job_id=e.job_id,
  c.salary=e.salary,
  c.commission_pct=e.commission_pct,
  c.manager_id=e.manager_id,
  c.department_id=e.department_id
when not matched then
  insert values(e.employee_id,e.first_name,e.last_name,e.email,e.phone_number,
  e.hire_date,e.job_id,e.salary,e.commission_pct,e.manager_id,e.department_id)

注意:被on关联的列(employee_id)不能被更新,否则会报错ORA-38104:无法

更新on子句中引用的列。

--实验
JOHN@ ora10g> select * from jobs;

JOB_ID     JOB_TITLE    MIN_SALARY MAX_SALARY
---------- ------------ ---------- ----------
ad_pres    vp                20000      40000
fi_account accountant         4200       9000
st_clerk   stock clerk        2000       5000
it_prog    programmer         4000      10000
dba        db admin           4200       9000

JOHN@ ora10g> select * from jobs_acquisition;

JOB_ID     JOB_TITLE    MIN_SALARY MAX_SALARY
---------- ------------ ---------- ----------
ad_pres    vp                10000      40000
dba        db admin           4200       9000

JOHN@ ora10g> merge into jobs j
  2  using (select * from jobs_acquisition) a
  3  on (j.job_id=a.job_id)
  4  when matched then
  5  update set
  6  j.job_title=a.job_title,
  7  j.min_salary=a.min_salary,
  8  j.max_salary=a.max_salary
  9  when not matched then
 10  insert (j.job_id, j.job_title, j.min_salary, j.max_salary)
 11  values (a.job_id, a.job_title, a.min_salary, a.max_salary);

JOHN@ ora10g> select * from jobs;

JOB_ID     JOB_TITLE    MIN_SALARY MAX_SALARY
---------- ------------ ---------- ----------
ad_pres    vp                10000      40000
fi_account accountant         4200       9000
st_clerk   stock clerk        2000       5000
it_prog    programmer         4000      10000
dba        db admin           4200       9000

JOHN@ ora10g> select * from jobs_acquisition;

JOB_ID     JOB_TITLE    MIN_SALARY MAX_SALARY
---------- ------------ ---------- ----------
ad_pres    vp                10000      40000
dba        db admin           4200       9000

Oracle 合并 merger into的更多相关文章

  1. Sun 与 Oracle 合并的未来

    引言 SUN 2008 初 10 亿美元收购 MySQL Oracle 2009 年 4 月 74 亿美元收购 SUN Sun 与 Oracle 合并的未来 1,如果云计算对企业来说变得越来越重要,那 ...

  2. oracle 合并多个sys_refcursor

    一.背景 在数据开发中,有时你需要合并两个动态游标sys_refcursor. 开发一个存储过程PROC_A,这个过程业务逻辑相当复杂,代码篇幅较长.一段时间后要开发一个PROC_B,要用PROC_A ...

  3. oracle合并语句

    在sql server中的合并语句可以用xml path 详见http://www.cnblogs.com/codeyu/archive/2010/05/25/1743474.html 而oracle ...

  4. Oracle合并函数内容

    --MINUS去差集,取第一个集合有的而第二集合没有的,并以第一个字段排序select t.bumenbm from T_HQ_BM t minus select b.bumenbm from t_h ...

  5. Oracle合并某一列

    本文转载自:https://www.cnblogs.com/LeiYang5237/p/6761183.html 一.oracle11g使用listagg() within group()函数 如图一 ...

  6. Oracle 合并查询

    8).合并查询有时在实际应用中,为了合并多个select语句的结果,可以使用集合操作符号union,union all,intersect,minus.多用于数据量比较大的数据局库,运行速度快.1). ...

  7. oracle合并版本

    1)   添加字段,并自增 第一步:alter table TOWN add ID int 第二步:Update TOWN set id=rownum; Commit; 2)   更新表(另一张表) ...

  8. oracle合并查询

    1). Union 该操作符用于取得两个结果集的并集.当使用该操作符时,会自动去掉结果集中重复行. 2).union all 该操作符与union相似,但是它不会取消重复行,而且不会排序. 3). I ...

  9. Oracle - 合并查询数据项

    select c.channel, c.channel_name , s.show_type, s.show_type_name from T_CHANNEL_INFO c, T_SHOW_INFO ...

随机推荐

  1. Android Shimmer 发光微光动画

    这是Facebook提供的一个类库(题外话http://code.facebook.com,这里有很多好玩有趣有用的Facebook开源的类库) 这么炫酷的发光动画效果,想必很多Android码农都会 ...

  2. Go语言【第九篇】:Go数据结构之:数组

    Go语言数组 Go语言提供了数组类型的数据结构.数组时具有相同唯一类型的一组已编号且长度固定的数据项序列,中类型可以是任意的原始类型如整形.字符串或者自定义类型. 相对于声明number0,numbe ...

  3. (转)java +libsvm 安装与测试:

    libsvm 用SVM实现简单线性分类  (转自:http://www.cnblogs.com/freedomshe/archive/2012/10/09/2717356.html) 0. 下载lib ...

  4. CentOS expr和let

    1.expr,用于计算变量等 用法:expr 表达式 用例1: #运算符号和参数之间要有空格分开:[es@bigdata-senior01 ~]$ expr 2 + 3 5 #乘号(*)需要用 \ , ...

  5. 以安装PyTorch为例说明Anaconda在Windows/Linux上的使用

    在Windows10上配置完MXNet 1.3.0后,再配置PyTorch 1.0时,发现两者需要依赖的NumPy版本不一致,之前是通过pip安装NumPy,根据pip的版本不同,会安装不同版本的Nu ...

  6. 51NOD 1773:A国的贸易——题解

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1773 参考1:FWT讲解 https://www.cnblogs.com ...

  7. POJ1741 tree 【点分治】

    Tree Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 25286   Accepted: 8421 Description ...

  8. C/C++中字符串与数字相互转换

    数字转字符串: 用C++的streanstream: #include <sstream> #Include <string> string num2str(double i) ...

  9. Extjs 动态修改gridPanel列头信息以及store数据的方法

    1 /*******************************checkbox按钮 历史报警信息**************************************/ var check ...

  10. 中国MOOC_面向对象程序设计——Java语言_第2周 对象交互_秒计时的数字时钟

    第2周编程题 查看帮助 返回   第2周编程题,在课程所给的时钟程序的基础上修改 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系 ...