Row_Number在RowNumber之间的位置

007*_*070 5 sql-server

我尝试使用row_number从表中选择某些行.但是,sql会提示错误消息"无效的列名'ROWNUMBERS'".有人可以纠正我吗?

SELECT ROW_NUMBER() OVER (ORDER BY  Price ASC) AS ROWNUMBERS, * 
FROM Product
WHERE  ROWNUMBERS BETWEEN  @fromCount AND @toCount
Run Code Online (Sandbox Code Playgroud)

Ker*_*mit 19

WHERE由于正在进行逻辑查询处理,尝试引用子句中的别名列不起作用.在WHERE该前评估SELECT条款.因此,评估ROWNUMBERS时列不存在WHERE.

在此示例中引用列的正确方法是:

SELECT a.*
FROM
    (SELECT ROW_NUMBER() OVER (ORDER BY  Price ASC) AS ROWNUMBERS, * 
    FROM Product) a
WHERE a.ROWNUMBERS BETWEEN @fromCount AND @toCount
Run Code Online (Sandbox Code Playgroud)

供您参考,操作顺序为:

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY

  • Yay,1000th回答!:D + 1 (2认同)