Oracle 根据select查询数据进行批量修改 |
您所在的位置:网站首页 › oracle查询结果修改 › Oracle 根据select查询数据进行批量修改 |
平平无奇的工作中,突然有个需求要我进行批量修改的操作,而且是根据select的查询结果进行插入。 正常情况下,我的思路是先用select查出来,然后在代码中遍历结果集进行一个个update。 这样的方式让我觉得很不舒服,如果数据量大的话需要大量访问数据库,然后修改数据 然后思考,有批量插入,那么批量修改也应该存在,然后度娘就派上用场了,根据关键字的不断变化,最后我还是得到了想要的东西。 比如: 案例1:员工表有个当月工资的字段,每个月发工资的时候需要自动修改员工的当月工资,而当月工资是在工资表里面(所有发放的工资都记录在里面)----自己造的需求 update t_emp emp set emp.sal = ( select s.sal from t_sal s where s.emp_id = emp.id and s.sal_date = (select max(sal_date) from t_sal) ) where emp.id = ( select s.emp_id from t_sal s where s.emp_id = emp.id and s.sal_date = (select max(sal_date) from t_sal) )案例2:需要在数字连续的排序字段的中间插入一列数据,为了保证后面的排序顺序就需要+1(sql表示为在排序序号为9的位置插入) update DICT a set a.SHOW_ORDER = ( select b.SHOW_ORDER + 1 from DICT b where b.SHOW_ORDER = a.SHOW_ORDER ) where a.SHOW_ORDER = ( select c.SHOW_ORDER from DICT c where c.SHOW_ORDER >= 9 and c.SHOW_ORDER = a.SHOW_ORDER ); insert into DICT (id, DICT_NAME, SHOW_ORDER) values (DICT.nextval, 'DICT', 9);如有不对,欢迎大佬们指正 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |