Teradata 使用行号更新列

Teradata 使用行号更新列,teradata,rowcount,Teradata,Rowcount,我有一个很大的表,需要在Teradata中添加行号。表中已经有一列名为row_num,但我需要用实际数字更新它。我试图使用下面的代码,但它不会工作 update database.time set row_num = INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 MINVALUE 1 NO CYCLE)) 任何帮助都将不胜感激。谢谢 如果您有唯一标识每行的标识列,则可以执行以下操作: upd

我有一个很大的表,需要在Teradata中添加行号。表中已经有一列名为row_num,但我需要用实际数字更新它。我试图使用下面的代码,但它不会工作

update database.time
set row_num = INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
(START WITH 1
INCREMENT BY 1
MINVALUE 1
NO CYCLE))

任何帮助都将不胜感激。谢谢

如果您有唯一标识每行的标识列,则可以执行以下操作:

update t
    set t.row_num = tt.seqnum
    from database.time t,
         (select t.*, row_number() over (order by id) as seqnum
          from database.time t
         ) tt
    where t.id = tt.id;

如果有唯一标识每行的标识列,则可以执行以下操作:

update t
    set t.row_num = tt.seqnum
    from database.time t,
         (select t.*, row_number() over (order by id) as seqnum
          from database.time t
         ) tt
    where t.id = tt.id;

大表有多大?表是~4b记录为什么要为该表分配序列号?大表有多大?表是~4b记录为什么要为该表分配序列号?这不是Teradata Syntax这不是Teradata Syntax P.s.-@dnoeth建议,对于一个大表,您将使用CTA而不是UPDATE,这是完全正确的。当Kristen运行查询时,它将失败并出现数字溢出,因为默认情况下,ROW_NUMBER返回Int。但原始更新也会出现这种情况:-)@dnoeth-不一定,取决于版本和配置:-)为了安全起见-我在答案中添加了一个CAST-请您解释您的答案,而不是仅仅给出SQL?P.s.-@dnoeth将建议对于一个大表,您将使用CTA而不是更新,这是完全正确的。当Kristen运行查询时,它将失败并出现数字溢出,因为默认情况下,ROW_NUMBER返回一个Int。但是原始更新也会发生这种情况:-)@dnoeth-不一定,取决于版本和配置:-)为了安全起见,我在答案中添加了一个CAST。请解释您的答案,而不是仅仅给出SQL?