Я пытаюсь обновить столбец cohort_number
в таблице с последовательными значениями от 1 до x (в данном случае 42), используя последовательность, как показано ниже.
CREATE SEQUENCE seq start with 1 increment by 1 no maxvalue no cycle
UPDATE t1
SET cohort_number = next value for seq, instance_number = x.instanceNumber
FROM
(
SELECT id,
1 instanceNumber
FROM t1
) x
DROP SEQUENCE seq
Однако при обновлении, а непервая строка cohort_number = 1, вторая строка = 2 и т. д., первая строка cohort_column = 42, вторая строка cohort_column = 2. Т.е. кажется, что обновление обрабатывается из последней записи в результате выбора, а не из первой. Есть ли что-нибудь вокруг этого?
Я также пробовал с ROW_NUMBER, как показано ниже, но каждое значение для cohort_column установлено в 1, что, я считаю, связано с тем, что id
не имеет повторяющихся значений (но я 'я угадал здесь)
UPDATE t1
SET cohort_number = x.cohort_number, instance_number = x.instance_number
FROM
(
SELECT id,
ROW_NUMBER() over (order by id) as cohort_number,
1 instance_number
FROM t1
) x