问题:在Vertica中的列值中设置行号。
例如:
Table T has two columns: Id, name
我想使用脚本在名称的值中添加行号。在mySQl中,我运行以下脚本进行更新:
set @i=0;
update T set name = (CONCAT(name, (@i:=@i+1)));
但是,Vertica不支持变量。
您能否提供一种达到目标的方法?
答案 0 :(得分:2)
由于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;
我不知道这是否属于“自我加入”,这是不允许的。但也许这会指向正确的方向。