Oracle 根据select查询数据进行批量修改

您所在的位置:网站首页 oracle查询结果修改 Oracle 根据select查询数据进行批量修改

Oracle 根据select查询数据进行批量修改

#Oracle 根据select查询数据进行批量修改| 来源: 网络整理| 查看: 265

        平平无奇的工作中,突然有个需求要我进行批量修改的操作,而且是根据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