使用简单的SQL实现手动增量
我有一个表,其中包含一列使用简单的SQL实现手动增量,sql,oracle,Sql,Oracle,我有一个表,其中包含一列fieldName和另一列numberOfLine 我想自动递增numberOfLine,条件是字段名。如果fieldName发生更改,则插入请求的NumberOfLine重新开始计数必须从1开始insert-into-TableName值('xxx',?:numberofligneiincrementedbyfieldname) 我希望通过一个简单的sql请求来实现这一点,而不使用触发器 例如: 您想要行号(): ?表示指定列排序的排序列。您可以使用行编号()计算查询中
fieldName
和另一列numberOfLine
我想自动递增numberOfLine
,条件是字段名
。如果fieldName
发生更改,则插入请求的NumberOfLine
重新开始计数必须从1开始insert-into-TableName值('xxx',?:numberofligneiincrementedbyfieldname)
我希望通过一个简单的sql请求来实现这一点,而不使用触发器
例如:
您想要行号()
:
?
表示指定列排序的排序列。您可以使用行编号()
计算查询中的值:
select fieldName, row_number() over (partition by fieldName order by fieldName) as NumberOfLine
from t;
通常,
orderby
将是一个不同的列,用于指定您想要的顺序。这有点“xy问题”(谷歌it)的味道,而不是一些模拟的抽象数据,解释了真正的业务问题。我打赌你并不真的需要/想要“NumberOFLine”存储在表中。“自动递增”是什么意思?数据已经在一个表中,所以您只需要生成指定的数字。
select fieldName, row_number() over (partition by fieldName order by fieldName) as NumberOfLine
from t;