首页 > 解决方案 > 新 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

在此处输入图像描述

标签: sqloracle

解决方案


我建议你不要存储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>

如果您仍然想存储它,现在您知道如何存储它了。


推荐阅读