首页 > 解决方案 > 需要在oracle中生成我选择的序列号

问题描述

我有一个要求。

共有三个表,其中一些需要合并以后的数据,并应提供给用户以进行审计。

有没有办法为每个表生成一个唯一的序列号,这样序列号就不会重叠。

例如:表 A 可以包含从 1 到 100000 的数字 表 B 可以包含从 200000 到 300000 的数字 表 C 应该包含从 300000 到 400000 的数字

我认为这可以通过诸如起始值和最大值之类的标识列选项来完成。如果我选择身份,生成的序列将不在我的控制范围内,它将由 Oracle 随机选择。

有什么方法可以用 row_number 函数轻松完成吗?

标签: sqloraclesequenceidentityrow-number

解决方案


您可以直接使用 row_number() 函数,从 1 生成数字:

row_number() Over(Order by field_name)

如果要自定义从何处开始计数,可以将其添加到行号。例如,如果你想从 1001 开始:

1000 + row_number() Over(Order by field_name)

希望这可以帮助。


推荐阅读