Sql 行号()是否支持OVER(按1排序)?

Sql 行号()是否支持OVER(按1排序)?,sql,oracle,row-number,Sql,Oracle,Row Number,低于2个状态,给出2个不同的结果 SELECT t.EID,t.name, ROW_NUMBER() OVER(ORDER BY 1) AS ROW_NUM FROM ESWAR t ; EID名称行数 2 Ram 1 1湿婆2 3德瓦3 选择t.EID、t.name、按t.EID排序的行数作为行数 来自埃斯瓦特 ; EID名称行数 1湿婆1 2 Ram 2 3德瓦3 对于分析窗口函数,不能按排序依据中的位置访问列名 order by 1表示按数值1对结果进行排序,使其按常量而不是列的值进

低于2个状态,给出2个不同的结果

SELECT t.EID,t.name, ROW_NUMBER() OVER(ORDER BY 1) AS ROW_NUM
  FROM ESWAR t
;
EID名称行数 2 Ram 1 1湿婆2 3德瓦3 选择t.EID、t.name、按t.EID排序的行数作为行数 来自埃斯瓦特 ; EID名称行数 1湿婆1 2 Ram 2 3德瓦3
对于分析窗口函数,不能按排序依据中的位置访问列名

order by 1表示按数值1对结果进行排序,使其按常量而不是列的值进行排序

它本质上与“foobar”订单或99999订单相同,来自:

对ORDER BY条款的限制

以下限制适用于ORDER BY条款:

... 位置和列别名c_alias也无效。。。 因此,不能在OVER子句的ORDER BY中使用列位置。因此,它被简单地视为一个整数文本。由于所有行的文本都相同,因此没有定义顺序


只需使用列名即可。更清楚的是,这也适用于SELECT plus的ORDER BY子句,如果列的顺序改变,它不会中断。

因为ORDER BY在两个查询中都不同。第一个查询的order by 1相当于order by nothing randomorder@Tejashorder by 1相当于order by nothing随机顺序。。事实并非如此。数字意味着它表示列位置。这是在任何地方使用显式列名而不是序数的另一个重要原因@根据解析函数顺序,1表示零