2016-10-21 37 views
0

我想将以下序列列更新为将来的IDENTITY列,并且当前行必须更新为按update_time升序排序。sybase - 更新列为身份,按特定值排序

如何在Sybase中执行此操作?下面是我的简单例子。

当前表:

SEQUENCE | UPDATE_TIME | DATA 
null  | 2016-01-01 | x 
null  | 2013-01-01 | y 
null  | 2015-01-01 | z 

所需的表:

SEQUENCE | UPDATE_TIME | DATA 
3  | 2016-01-01 | x 
1  | 2013-01-01 | y 
2  | 2015-01-01 | z 

回答

0

我通过参加表到自身但是1个额外的ID行这样做。这个额外的行是使用ROW_NUMBER函数通过升序update_time来创建的。上a.update_time类似...

UPDATE SET为myTable = update_seq tmp.ID FROM myTable的一个INNER JOIN( SELECT UPDATE_TIME,数据,ROW_NUMBER()OVER(ORDER BY update_seq ASC)作为ID从myTable的TMP = tmp.update_time 和a.data = tmp.data

0

上的Sybase ASA可以使用更新且具柱:

update [table_name] 
set [SEQUENCE]=number(*) 
order by [UPDATE_TIME]