我正在使用SQL,我有一个看起来像的表:
variable1 123
variable2 39
variable3 993
variable4 2
我想添加一个对应于整数排名的列,如果该列已经排序。即:
variable1 123 3
variable2 39 2
variable3 993 4
variable4 2 1
到目前为止,我还没有能够正确理解语法 - 我可以按该列排序或排序,但不能生成正确的排名变量。
非常感谢。
答案 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.