使用ROW_NUMBER更新列

时间:2017-01-20 00:17:42

标签: sql sql-server

我正在尝试使用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

如果我只跑:

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

它就像一个魅力。想法?

1 个答案:

答案 0 :(得分:1)

如果id_pv不唯一,则select不会产生稳定的结果。您可能需要添加另一个ORDER BY子句唯一的列来稳定排序。这应该会产生可重复的结果。