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. BZOJ 1509 逃学的小孩(树的直径)

    题意:从树上任找三点u,v,w.使得dis(u,v)+min(dis(u,w),dis(v,w))最大. 有一个结论u,v必是树上直径的两端点. 剩下的枚举w就行了. 具体不会证... # inclu ...

  2. 【bzoj3132】上帝造题的七分钟 二维树状数组区间修改区间查询

    题目描述 “第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的操作. ...

  3. 【bzoj1858】[Scoi2010]序列操作 线段树区间合并

    题目描述 lxhgww最近收到了一个01序列,序列里面包含了n个数,这些数要么是0,要么是1,现在对于这个序列有五种变换操作和询问操作: 0 a b 把[a, b]区间内的所有数全变成0 1 a b ...

  4. BZOJ4289 PA2012Tax(最短路)

    一个暴力的做法是把边看成点,之间的边权为两边的较大权值,最短路即可.但这样显然会被菊花图之类的卡掉. 考虑优化建图.将边拆成两个有向边,同样化边为点.原图中同一条边在新图中的两个点之间连边权为原边权的 ...

  5. Socket_SSH-1

    服务器端: import socket,os server=socket.socket() server.bind(('localhost',9999)) server.listen() while ...

  6. 2017中国大学生程序设计竞赛-哈尔滨站 H - A Simple Stone Game

    A Simple Stone Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Ot ...

  7. POJ1741:Tree——题解+树分治简要讲解

    http://poj.org/problem?id=1741 题目大意:给一棵树,求点对间距离<=k的个数. ———————————————————— 以这道题为例记录一下对于树分治的理解. 树 ...

  8. AOJ.综合训练.2016-12-1

    友情提示:不要复制粘贴,看完解析先自己尝试写一下,不行再看代码!祝AC愉快 @_@ A. 近似值计算 题意分析 根据公式,先用含有n的代数式表示出来pi,然后计算这个近似值和题目给出来的3.14159 ...

  9. JavaScript去除数组中的重复值

    用原型函数(prototype)可以定义一些很方便的自定义函数,实现各种自定义功能. Javascript 中的原型函数(prototype)的工作原理,在 javascript 中每次声明新函数的过 ...

  10. Unity3D开发七惑

    使用Unity3D开发也有大半年了,心中存惑如下,愿与各位开发者一起探讨: (1)  远离普适编程之惑 随着游戏引擎的不断发展,游戏程序员的开发层级也越来越高,以unity3d尤为突出.如果是进行We ...