Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用简单的SQL实现手动增量_Sql_Oracle - Fatal编程技术网

使用简单的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;