sql - 新 ID 的序列生成
问题描述
我有一个要求,其中有 2 个表 A 和 B。有一个名为 ID 的列,它是 A 的主键和表 B 的外键,其中表之间具有一对多的关系。在表 A 的 ID 列中,我们有条目 1、2、3,对于它们,我们有一个 ID 对应的多个条目,表 B 中名为 SEQ 的另一列已经为其中的条目创建了一个序列。现在对于 ID 1 的条目,我在表 B 中有 3 个条目,SEQ 1,2,3 但是当新的 ID 条目将在那里时,我需要再次从该 ID 的 1 开始序列。**你能帮我吗要做到这一点。
表A
解决方案
我建议你不要存储SEQ
价值。你为什么要?在需要时很容易计算它。如何?像这样,使用row_number
解析函数:
SQL> with b (id, name) as
2 (select 1, 'TRI' from dual union all
3 select 1, 'TRI' from dual union all
4 select 1, 'TRI' from dual union all
5 select 2, 'ROHIT' from dual union all
6 select 2, 'ROHIT' from dual union all
7 select 3, 'RAVI' from dual
8 )
9 select id,
10 name,
11 row_number() over (partition by id order by null) seq
12 from b;
ID NAME SEQ
---------- ----- ----------
1 TRI 1
1 TRI 2
1 TRI 3
2 ROHIT 1
2 ROHIT 2
3 RAVI 1
6 rows selected.
SQL>
如果您仍然想存储它,现在您知道如何存储它了。
推荐阅读
- java - 我可以将接口传递给 Fragment 的捆绑包吗?
- javascript - JavaScript 未在 Drupal 中加载 (8)
- ios - 如何制作与文本并排的自定义垂直滑块?
- python - Python3 MRJob 输出未排序的键值对
- python-3.x - 使用 while 循环在 Python 中测试和接受用户输入
- git - 在已推送代码的 bitbucket 中的任何分支上触发 Jenkins 管道
- php - 图像干预 - 替换颜色
- javascript - 知道哪个按钮提交了表单(PHP 和 Javascript)
- swift - 如何在 Swift 中访问具有动态类型检查的属性,例如 Obj-C 的 id?
- pandas - 旋转和多索引