我希望以后将序列列更新为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
答案 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]