2011-12-15 57 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开始的每个分区中的第一行。