Sql 使用行号更新列

Sql 使用行号更新列,sql,sql-server,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 下面是更新前后表的两列 如果我只运行: select ROW_NUMBER() O

我正在尝试使用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
下面是更新前后表的两列

如果我只运行:

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

它就像一个符咒。想法?

如果
id\u pv
不是唯一的,那么选择将不会产生稳定的结果。您可能需要添加另一列,该列对于
orderby
子句是唯一的,以稳定排序。这将产生可重复的结果。

id\u pv是否唯一?它似乎不是来自截图。不,不是。该字段是客户端的标识符。实际上,这个表有大约40个字段。但在某些情况下,它是有效的。我需要的是添加一个序列号(带有更新指令),考虑到id_pv fieldOk,我将尝试查找其他列。还有别的方法吗?我不知道;然而,这不是我第一次不知道。另一列本身不需要是唯一的,但这两个列确实是唯一的。