zoukankan      html  css  js  c++  java
  • Oracle 合并 merger into

    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

  • 相关阅读:
    JS字符串截取(获取指定字符后面的所有字符内容)
    vue图片上传插件
    php获取两个日期之间的所有日期
    laravel做定时任务时,加参数(也可缓存参数)
    前端传参数(数组,值为json字符串),后端接收json_decode()转为数组,数组为空值
    springboot的maven多模块项目
    如何给文件重命名
    springboot的get请求和post请求
    java调用ffmpeg
    mybatis批量插入List
  • 原文地址:https://www.cnblogs.com/john2017/p/6371615.html
Copyright © 2011-2022 走看看