postgresql关联更新与窗口函数应用

表结构如下


这里面的数据就是全国行政区划


1.seqno就是序列,是所有节点dictcode连起来的序列,以点隔开。以第二级rank=2为例,则seqno=(parentcode的seqno)||dictcode||'.'  我们关联更新下


update sys_casdictentry a
set seqno=b.seqno||a.dictcode||'.'  
   from sys_casdictentry  as b
where a.rank=2 and a.parentcode=b.dictcode;


这里面要注意的是set后面的seqno=前不能带别名,也就是set a.seqno=这样会报错,不知道为什么,试了很多次才摸索出规律。


2.用一下窗口函数,刚倒进来的数据没有sortno也就是排序字段,现在想设置为按照dictcode排列

update sys_casdictentry a set sortno=c.sortno
from (select row_number() over(partition by dicttype,parentcode order by dictcode) as sortno,dictcode from sys_casdictentry b where rank=2) c
 where a.rank=2 and a.dictcode=c.dictcode;


关键在于select row_number() over(partition by dicttype,parentcode order by dictcode) as sortno   

这个大家自己体会









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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值