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