2017-01-05 6 views
0

私は2列のPKを持つテーブルを持っています。私は新しい列、nidを追加したいと思います。これは特定のORDER BYに基づいて各行(1,2,3 ...)に番号を付けます。すべての行に注文番号を付ける

ので:zのASCによって番号

x | y | z 
3 7 2 
1 4 1 

は次のようになります。

x | y | z | nid 
3 7 2 | 2 
1 4 1 | 1 

は、私はSQL(Postgresの9.4)でこれを行うことができますか?

+1

Zの列に重複があった場合は何? – GurV

+0

特定の注文ですか? – jarlh

+0

この注文の末尾以外の行を追加すると、データベースはどのように動作するでしょうか?この順番でさらにすべての行を更新して番号を1つ増やす必要がありますか?面倒なようです...私はDBAではありませんが、リクエストによってこの番号のリクエストを受け取ったり、必要なときにそれを計算するビューを作成する方がよいでしょう。 – Aaron

答えて

2

私が正しく理解していれば、あなただけのrow_number()を使用することができます。

select x, y, z, row_number() over (order by z) as nid 
from t; 
関連する問題