0

我想将来将下面的序列列更新为 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
4

2 回答 2

0

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

update [table_name]
set [SEQUENCE]=number(*)
order by [UPDATE_TIME]
于 2017-08-29T22:01:05.260 回答
0

我通过将表格加入到自身上来做到这一点,但有 1 个额外的 ID 行。此附加行是使用 ROW_NUMBER 函数通过对 update_time 升序进行排序而创建的。就像是...

UPDATE myTable SET update_seq = tmp.ID FROM myTable a INNER JOIN (SELECT update_time, data, ROW_NUMBER() OVER (ORDER BY update_seq ASC) as ID from myTable tmp on a.update_time = tmp.update_time and a.data = tmp.data

于 2016-11-14T17:41:31.933 回答