千家信息网

关于Rack()自增长的一则双表关联更新

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,A表(tb_abc):AB1aa02002bb03003cc05004dd18005ee22006ff3300B表(tb_abcc):AB1aa(0201)2aa(0202)3bb(0301)4bb(
千家信息网最后更新 2025年02月03日关于Rack()自增长的一则双表关联更新

A表(tb_abc):


AB
1aa
0200
2bb0300
3cc0500
4dd1800
5ee2200
6ff3300

B表(tb_abcc):


A
B
1aa
(0201)
2aa(0202)
3bb(0301)
4bb(0302)
5bb(0303)
6cc(0501)

括号里是预期值

规则: 通过B表的a字段匹配A表的a字段,并读取A表的b字段,按照该值依次增数写入B表b字段

实现:

update  tb_abcc cset  c.b =  (select    tmp.str  from    (select      b.rowid rd,      b.a,      substr(a.b, 1, 2) || lpad(        (          rank () over (partition by b.a            order by b.rowid)        ),        2,        0      ) str    from      tb_abc a,      tb_abcc b    where a.a = b.a) tmp  where c.rowid = tmp.rd)where exists  (select    'x'  from    (select      b.rowid rd,      b.a,      substr(a.b, 1, 2) || lpad(        (          rank () over (partition by b.a            order by b.rowid)        ),        2,        0      ) str    from      tb_abc a,      tb_abcc b    where a.a = b.a) tmp  where c.rowid = tmp.rd);

6 rows updated

select * from tb_abcc;

A B

---- ------

aa 0201

aa 0202

bb 0301

bb 0302

bb 0303

cc 0501


6 rows selected

0