想要update顺序按照order by的条件

要求:更新采购申请明细行的行号row_id字段,按照单据分组,明细行id排序,让row_id从1开始更新

  update scm_dem_purchase_req_dtl_tbl
     set row_id = rownum
   where bill_id =139505
   order by id;

--这样写报错,应为update与order by 不能一起使用,做一下的修改

逻辑:

使用分析函数:row_number() over(order by id) rn,以id排序,查出rn,用以更新值;

然后自关联表更新 row_id 为 查出的符合要求的rn字段,即可!!

哈哈,分析函数很好用~~~

update scm_dem_purchase_req_dtl_tbl t

   set row_id =
       (select rn
          from (select bill_id, id, row_number() over(order by id) rn
                  from scm_dem_purchase_req_dtl_tbl tt
                 where bill_id = 139505)tt
                 where t.id = tt.id)

 where bill_id = 139505;



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值