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

时间:2015-06-12 21:16:45

标签: mysql sql sql-order-by

我正在使用SQL,我有一个看起来像的表:

variable1   123
variable2   39
variable3   993
variable4   2

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

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

到目前为止,我还没有能够正确理解语法 - 我可以按该列排序或排序,但不能生成正确的排名变量。

非常感谢。

2 个答案:

答案 0 :(得分:1)

最佳表现方式是使用变量:

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

注意:从技术上讲,这是row_number(),但两者对于您的样本数据是等效的,因为没有关系。

答案 1 :(得分:0)

听起来你需要在插入之前创建一个触发器来更新该列,以增加每个变量的等级整数,该变量的值高于你将要插入的值1.