在 SQL 中创建与条目排名位置对应的列

Create column corresponding to entry rank position in SQL

我正在使用 SQL 并且我有一个 table 看起来像:

variable1   123
variable2   39
variable3   993
variable4   2

我想添加一个对应于整数排名的列,如果该列已排序。即:

variable1   123    3
variable2   39     2
variable3   993    4
variable4   2      1

到目前为止,我无法获得正确的语法 - 我可以按该列排序或排序,但无法生成正确的排名变量。

非常感谢。

性能最佳的方法是使用变量:

select t.*,
       (@rn := @rn + 1) as rank
from table t cross join
     (select @rn := 0) params
order by intcol;

注意:这在技术上做了一个 row_number() 但两者对于您的示例数据是等效的,因为没有联系。

听起来您需要在插入之前创建一个触发器来更新该列以增加每个变量的排名整数,这些变量的值比您要插入的值高 1。