1

問題: Vertica で列の値に行番号を設定する。

例えば:

Table T has two columns: Id, name

スクリプトを使用して、名前の値に行番号を追加したいと考えています。mySQl で、次のスクリプトを実行して更新します。

set @i=0;
update T set name = (CONCAT(name, (@i:=@i+1)));

ただし、Vertica は変数をサポートしていません。

目標に到達する方法を教えてください。

4

1 に答える 1

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;

それが許可されていない「自己結合」に該当するかどうかはわかりません。しかし、おそらくそれはあなたを正しい方向に向けています。

于 2013-06-26T21:17:49.560 に答える