oracle 国产数据库 使用 in 和 decode 自定义排序,update更新序列号,自增列

一:今天做一个记录,在oracle或者国产数据库中如何使用 in  来自定义排序

  首先,在mysql中 in 语句中自定义排序如下

    set @rownum = 0;

	update table_name
	SET sequence = (
	    select @rownum := @rownum +1 as nid
        )
	WHERE 1=1 order by id
// 在mysql中 这条语句可以正常执行,update 和 roder by 是先排序再修改

二:但是在oracle 或者国产数据库中,update 和 order by 是不可以一起使用的,会报语法解析错误

所以,经过我在百度和在qq群询问别人之后,得到了一个方法,如何做到,先排序再赋值,并且是自增列序列号,sql如下:

本人亲测有效

update (
	select
	        row_number() over(order by decode(name, 'dee6acfc029d40c49e61977ed46ae37d',1,  'a91c4bb7802c4222ba4236cb4adc61cb',2, 'cffcbd69f2e94a48a553420dddd4c617',3) asc) num
	        ,  *
	from  aaa
	where  name in ('dee6acfc029d40c49e61977ed46ae37d', 'a91c4bb7802c4222ba4236cb4adc61cb', 'cffcbd69f2e94a48a553420dddd4c617')
	order by
	        decode(name, 'dee6acfc029d40c49e61977ed46ae37d',1,  'a91c4bb7802c4222ba4236cb4adc61cb',2, 'cffcbd69f2e94a48a553420dddd4c617',3)
	        )
	  set id3 = num

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值