2011-12-15 55 views
2

首先,對於問題的措辭感到抱歉。我不太確定如何表達它。希望下面的例子很清楚。SQL:更新列,其索引在列更改時重置

如果我有一個表

Id | Type | Order 
0 | Test | null 
1 | Test | null 
2 | Blah | null 
3 | Blah | null 

我希望把它變成這個

Id | Type | Order 
0 | Test | 1 
1 | Test | 2 
2 | Blah | 1 
3 | Blah | 2 

所以我通過分組「類型」表和增量分配號碼「秩序」 。它將從每種類型開始。

我應該怎麼做呢?

Db的我使用的是15的Sybase

+0

我的答案假定SQL Server。你的RDBMS是什麼?請明確說明。 – 2011-12-15 01:12:47

+0

我使用的是Sybase,雖然我確定你的回答是正確的,但我似乎無法在Sybase中得到相同的結果。 – 2011-12-15 01:22:32

回答

1
select 
    Id, 
    Type, 
    row_number() over(partition by Type order by Id) as [Order] 
from YourTable 

你應該利用ROW_NUMBER功能,讓你你在找什麼。

ROW_NUMBER(處理SQL)

返回的行的順序號。結果 集的分區中,從1開始的每個分區中的第一行。