sybase - 更新列为标识,按特定值排序

时间:2016-10-21 15:35:23

标签: sql sybase identity asa

我希望以后将序列列更新为IDENTITY列,并且必须更新当前行以通过update_time升序进行排序。

如何在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

2 个答案:

答案 0 :(得分:0)

我是通过将表连接到自身但是增加了1个ID行来完成此操作。通过命令update_time升序,使用ROW_NUMBER函数创建此附加行。有点像...

更新myTable SET update_seq = tmp.ID 来自myTable一个内部联接( SELECT update_time,data,ROW_NUMBER()OVER(ORDER BY update_seq ASC)作为来自myTable tmp的ID 在a.update_time = tmp.update_time上 和a.data = tmp.data

答案 1 :(得分:0)

在Sybase ASA上,您可以使用该更新对列进行计算:

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