SQL:使用索引更新列,如果列更改,则重置该索引

时间:2011-12-15 01:01:04

标签: sql stored-procedures sybase

首先,对不起问题的措辞。我不太清楚如何表达它。希望下面的例子很清楚。

如果我有桌子

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

所以我按'类型'对表进行分组,并逐步为'order'分配一个数字。它将从每种类型的1开始。

我应该怎么做呢?

我正在使用的是Sybase 15。

1 个答案:

答案 0 :(得分:1)

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

您应该使用ROW_NUMBER功能来获取您正在寻找的内容。

  

ROW_NUMBER (Transact-SQL)

     

返回结果分区中行的序号   设置,从1开始,每个分区的第一行。