PLSQL_两表之间的相互操作

 一、从一个表插入到另一个表中

      表的插入操作,有时需要考虑到自增的情况,用到了nextval函数,然后利用 insert into table1 (....) select... from table2 的语法。注意select与()中的值 一 一对应。

      insert  into plan_target_run (spec_run_id, dept_id, cost_id, manage_id, attribute1, attribute2, attribute3,note, flag,last_update_date, last_updated_by)
      select plan_target_spec_run_s.nextval, t.dept_id, t.cost_id, t.manage_id, null,null, null,null, 0, sysdate, 1  from plan_target_library t  where t.dept_id=168875 and t.type_id=3

     上述语句是从plan_target_library表中插入相应的数据到plan_target_run中。


二、用一个表的数据更新另一表的数据

       从后台导入数据时,常常用到Excel格式导入,在建立临时表后,怎么把两个表对应起来是一个逻辑思考的问题。

       update plan_target_run t   set t.target_value = (select s.tempruntarget  from targetruntemp s  where s.temprunid = t.run_id)   where t.run_id in  (select s.temprunid from targetruntemp s where s.temprunid = t.run_id)
        上述中 select s.teamruntarget  from targetruntemp s  where s.temprunid = t.run_id   t.run_id是对表plan_target_run遍历过程中的某一个确定值,因此这条语句是一条记录。与select s.temprunid from targetruntemp s where s.temprunid = t.run_id一样  t.run_id是确定的,两者操作的是统一记录,获取不同的属性。

        多么复杂的关系,都记住常规语法,update table1 set table1.attribute=... where (条件)。


你可能感兴趣的:(sql,plsql)