Sql 基于另一列值使用排序号更新列

Sql 基于另一列值使用排序号更新列,sql,oracle,sorting,Sql,Oracle,Sorting,假设我有一个两列的表。第一列“值”用随机数填充。第二列“sort”为空。如何按顺序用整数更新“sort”,将最小的整数分配给“value”列中的最大值 因此,首先: Value | Sort 76 | 0 82 | 0 7 | 0 14 | 0 结果将是: Value | Sort 76 | 2 82 | 1 7 | 4 14 | 3 假设您使用的是什么样的SQL,您可以使用row_number()函数来获取按您想要的方式排序的行 在子句上

假设我有一个两列的表。第一列“值”用随机数填充。第二列“sort”为空。如何按顺序用整数更新“sort”,将最小的整数分配给“value”列中的最大值

因此,首先:

Value | Sort
76    | 0
82    | 0
7     | 0
14    | 0
结果将是:

Value | Sort
76    | 2
82    | 1
7     | 4
14    | 3

假设您使用的是什么样的SQL,您可以使用row_number()函数来获取按您想要的方式排序的行

在子句上使用

update table1
set sort = t.rnum 
from (select table1.value, row_number() OVER (ORDER BY value desc) as rnum from table1) t

始终标记您正在使用的DBMS(SQL Server、MySQL等)@MiloLaMar是的,如果他能提供他正在使用的服务器,我可以相应地更改我的代码。它是oracle。我只是想做一些像“大数字”——Value=sort number这样的事情可能最简单。@AaronDietz我将使用
Over
子句更新我的答案。因为他使用的是Oracle,所以第一个版本是否在没有内联视图的情况下工作,也就是说,
rownum
是否设置在
ORDER BY
之前?@MickMnemonic&AaronDietz感谢您指出这一点。一开始我对他使用的服务器有点困惑。我已经取消了我的第一个选择。