2017-01-20 7 views
1

ROW_NUMBER()を使用して列を更新しようとしていますが、時にはうまくいくだけで何が問題なのですか?私は実行している場合はここROW_NUMBERを使用して列を更新

update temp1 set temp1.RowNumber = m.RowID 
from 
(
    select ROW_NUMBER() OVER (ORDER BY t.id_pv) as 'RowID', id_pv 
    from temp1 t 
) m 
where temp1.id_pv = m.id_pv 

は、更新前と更新

enter image description here

後、表の2列です::

select ROW_NUMBER() OVER (ORDER BY t.id_pv) as 'RowID', id_pv from temp1 t 

それは魔法のように動作これは命令です。アイデア?

+0

'id_pv'は一意ですか?それはスクリーンショットからのものではないようです。 –

+0

いいえ、そうではありません。そのフィールドはクライアントの識別子です。実際には、テーブルには約40のフィールドがあります。しかし、場合によっては動作します。何が必要なのは、id_pvフィールドを考慮して、連続番号(更新命令付き)を追加することです。 –

答えて

1

id_pvが一意でない場合、選択しても安定した結果が得られません。並べ替えを安定させるために、ORDER BY句に固有の別の列を追加する必要があります。それは反復可能な結果を​​生むはずです。

+0

Ok、別の列を見つけようとします。これを行う別の方法がありますか? –

+0

私が知っているわけではありません。しかし、私が気付いていないのは初めてではありません。他の列自体は一意である必要はありませんが、それらのペアは同じです。 –

関連する問題