gpt4 book ai didi

sql - TSQL - UPDATE 语句中的自动增量

转载 作者:行者123 更新时间:2023-12-03 22:58:39 25 4
gpt4 key购买 nike

SQL Server 2005

我有一张包含以下内容的表格:-

[order_id]     [index_1]
600020001 0
600020002 0
600020002 0
600020002 0
600020003 0
...

需要更新为:-
[order_id]     [index_1]
600020001 1
600020002 1
600020002 2
600020002 3
600020003 1

我正在尝试编写一个 UPDATE 语句来填充 index_1 字段,如上例所示。我可以使用 CURSOR 来实现这一点,但如果可能的话,最好不要这样做。

对于每个新的 order_id,编号都会重新开始。对于每个 order_id 行,index_1 字段增加 1。

没有游标可以做到这一点吗?

最佳答案

您可以使用 CTErow_number()做你想做的事。表@T下面的代码仅用于演示。替换 @T不管你的 table 叫什么。

declare @T table ([order_id] int, [index_1] int)

insert into @T values
(600020001, 0),
(600020002, 0),
(600020002, 0),
(600020002, 0),
(600020003, 0)

;with cte as
(
select index_1,
row_number() over(partition by order_id order by (select 1)) as rn
from @T
)
update cte
set index_1 = rn

select *
from @T

结果:
order_id    index_1
----------- -----------
600020001 1
600020002 1
600020002 2
600020002 3
600020003 1

关于sql - TSQL - UPDATE 语句中的自动增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6957500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com