问题:在 Vertica 的列值中设置行号。
例如:
Table T has two columns: Id, name
我想使用脚本在名称的值中添加行号。在 mySQl 中,我运行以下脚本进行更新:
set @i=0;
update T set name = (CONCAT(name, (@i:=@i+1)));
但是,Vertica 不支持变量。
您能否提供一种达到目标的方法?
由于 Vertica 支持窗口函数,因此可以使用以下方法检索此数据:
select name,
row_number() over (order by name) as rn
from T;
我不确定如何将其移至 UPDATE 语句中 - 我没有可用的 vertica 安装:
update T
set name = name || tx.rn
from (
select id,
row_number() over (order by name) as rn
from T
) as tx
where tx.id = t.id;
我不知道这是否属于不允许的“自加入”。但也许这会为你指明正确的方向。