关于Rack()自增长的一则双表关联更新
短信预约 -IT技能 免费直播动态提醒
A表(tb_abc):
A | B | |
1 | aa | 0200 |
2 | bb | 0300 |
3 | cc | 0500 |
4 | dd | 1800 |
5 | ee | 2200 |
6 | ff | 3300 |
B表(tb_abcc):
A | B | |
1 | aa | (0201) |
2 | aa | (0202) |
3 | bb | (0301) |
4 | bb | (0302) |
5 | bb | (0303) |
6 | cc | (0501) |
括号里是预期值
规则: 通过B表的a字段匹配A表的a字段,并读取A表的b字段,按照该值依次增数写入B表b字段
实现:
update
tb_abcc c
set
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
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341