Row_Number Over Where RowNumber 之间 [英] Row_Number Over Where RowNumber between
问题描述
我尝试使用 row_number 从我的表中选择某些行.但是sql会提示错误msgInvalid column name 'ROWNUMBERS'".任何人都可以纠正我吗?
I'm try to select a certain rows from my table using the row_number over. However, the sql will prompt the error msg "Invalid column name 'ROWNUMBERS' ". Anyone can correct me?
SELECT ROW_NUMBER() OVER (ORDER BY Price ASC) AS ROWNUMBERS, *
FROM Product
WHERE ROWNUMBERS BETWEEN @fromCount AND @toCount
推荐答案
尝试引用 WHERE
子句中的别名列不起作用,因为发生了逻辑查询处理.WHERE
在 SELECT
子句之前计算.因此,当计算 WHERE
时,列 ROWNUMBERS
不存在.
Attempting to reference the aliased column in the WHERE
clause does not work because of the logical query processing taking place. The WHERE
is evaluated before the SELECT
clause. Therefore, the column ROWNUMBERS
does not exist when WHERE
is evaluated.
在此示例中引用列的正确方法是:
The correct way to reference the column in this example would be:
SELECT a.*
FROM
(SELECT ROW_NUMBER() OVER (ORDER BY Price ASC) AS ROWNUMBERS, *
FROM Product) a
WHERE a.ROWNUMBERS BETWEEN @fromCount AND @toCount
供您参考,操作顺序为:
For your reference, the order for operations is:
FROM
WHERE
GROUP BY
拥有
SELECT
ORDER BY
这篇关于Row_Number Over Where RowNumber 之间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!