sybase - обновить столбец, чтобы он был идентичным, упорядоченным по определенным значениям

Я хочу обновить столбец последовательности ниже, чтобы он стал столбцом 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 ответа

Я сделал это, присоединив таблицу к себе, но с 1 дополнительной строкой идентификатора. Эта дополнительная строка создается с помощью функции ROW_NUMBER, упорядочивая по возрастанию update_time. Что-то вроде...

ОБНОВЛЕНИЕ myTable SET update_seq = tmp.ID ИЗ myTable ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ update_time, data, ROW_NUMBER() OVER (ORDER BY update_seq ASC) в качестве идентификатора из myTable tmp для a.update_time = tmp.update_time и a.data = tmp.data

На Sybase ASA вы можете нумеровать столбец, используя это обновление:

update [table_name]
set [SEQUENCE]=number(*)
order by [UPDATE_TIME]
Другие вопросы по тегам