sql - 需要在oracle中生成我选择的序列号
问题描述
我有一个要求。
共有三个表,其中一些需要合并以后的数据,并应提供给用户以进行审计。
有没有办法为每个表生成一个唯一的序列号,这样序列号就不会重叠。
例如:表 A 可以包含从 1 到 100000 的数字 表 B 可以包含从 200000 到 300000 的数字 表 C 应该包含从 300000 到 400000 的数字
我认为这可以通过诸如起始值和最大值之类的标识列选项来完成。如果我选择身份,生成的序列将不在我的控制范围内,它将由 Oracle 随机选择。
有什么方法可以用 row_number 函数轻松完成吗?
解决方案
您可以直接使用 row_number() 函数,从 1 生成数字:
row_number() Over(Order by field_name)
如果要自定义从何处开始计数,可以将其添加到行号。例如,如果你想从 1001 开始:
1000 + row_number() Over(Order by field_name)
希望这可以帮助。
推荐阅读
- android - 无障碍服务不是上下文吗?
- javascript - 未捕获的 ReferenceError:未定义 dropdownFunc。Onclick 功能不起作用
- python - 我无法将时间戳转换为可读字符串
- faunadb - 如何加入动物群数据库中的收藏?
- javascript - 如何将数据从 Subject observable 推送到组件中的数组?
- flutter - Flutter setState()不触发重新构建
- angular - 如何在Angular中将参数传递给组件的templateUrl?
- vue.js - Vue - 将变量作为组件道具传递
- powerbi - DAX - 从过滤的 SUMMARIZE 公式中获取列表
- firefox - HLS 流无法在 Mobile Firefox 上使用 Videojs 播放