Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 server 使用编程在SQL Server中递增值_Sql Server_Using_Auto Increment - Fatal编程技术网

Sql server 使用编程在SQL Server中递增值

Sql server 使用编程在SQL Server中递增值,sql-server,using,auto-increment,Sql Server,Using,Auto Increment,我在SQL Server中有一个表,它有3个字段 Id int identity(1,1) thRead int level int 现在在这个表中有一些线程,比如1-5个,都重复了5次,如下所示: 1,1,1,1,1 2,2,2,2,2 3,3,3,3,3 4,4,4,4,4 5,5,5,5,5 现在我想更新级别,对于一组记录,它应该从零开始递增,对于另一组记录,它应该从0开始递增,依此类推 我想要如下表所示的输出 1 0 1 1 1 2 1 3 1 4 2 0

我在SQL Server中有一个表,它有3个字段

Id int identity(1,1)
thRead int
level int
现在在这个表中有一些线程,比如1-5个,都重复了5次,如下所示:

 1,1,1,1,1 2,2,2,2,2 3,3,3,3,3 4,4,4,4,4 5,5,5,5,5
现在我想更新级别,对于一组记录,它应该从零开始递增,对于另一组记录,它应该从0开始递增,依此类推

我想要如下表所示的输出

1   0
1   1
1   2
1   3
1   4
2   0
2   1
2   2
2   3
2   4
3   0
3   1
3   2
3   3
3   4
请任何人帮我解决这个问题。。。更新应该使用select查询,因此不需要手动输入线程,它应该自动更新

谢谢和问候
阿巴斯电气瓦拉

这是一次性更新吗?如果是这样的话,这就行了

with cte as
(
SELECT Id , thRead, level,
       ROW_NUMBER() OVER (PARTITION BY thRead ORDER BY Id) -1 AS RN
FROM T
)
UPDATE cte
SET level = RN
如果您想对更难的新行执行此操作。

您可以尝试此操作

;WITH Temp as
(
 SELECT Id , thRead, ROW_NUMBER() OVER (PARTITION BY thRead ORDER BY Id) -1 'Level' 
 FROM YourTable
)
Select Id, ThRead, Level from Temp

输出与预期结果的相关性如何?你能解释一下吗?@Anil:事实上,对于论坛中添加的任何线程,其帖子级别都会增加,当另一个线程启动时,帖子级别会再次设置为0,因此对于任何线程,帖子级别都会增加,直到线程结束并启动新线程……伟大的帮助人。。。它起作用了。。。非常感谢anil,但如果可以,请解释一下这是怎么回事。。。我不明白它的逻辑。@Aabas-很高兴知道。。。查询的第一部分是CTS-公共表表达式。这将为您提供一组临时数据,您可以在主查询中使用这些数据。很像在FROM子句中创建的表。在这个CTS中,我使用了ROW_Number(),这是构建函数中的SQL,它为OVER part的PARTITION子句中提到的字段提供索引值。结果按ORDERBY子句为每个组排序。希望这能澄清你的想法。@Aabas-此外,如果我的答案真的解决了你的问题,你可以将其标记为已接受的答案:)