Postgresql 在Postgres中的WHERE语句中使用ROW_NUMBER()函数
以下是博士后的工作:Postgresql 在Postgres中的WHERE语句中使用ROW_NUMBER()函数,postgresql,row-number,Postgresql,Row Number,以下是博士后的工作: SELECT * FROM ( SELECT product_id, product_name, price, ROW_NUMBER () OVER (ORDER BY product_name) FROM products ) x WHERE ROW_NUMBER BETWEEN 6 AND
SELECT
*
FROM
(
SELECT
product_id,
product_name,
price,
ROW_NUMBER () OVER (ORDER BY product_name)
FROM
products
) x
WHERE
ROW_NUMBER BETWEEN 6 AND 10;
我的问题是为什么以下简单的尝试不起作用
SELECT
product_id,
product_name,
price,
ROW_NUMBER () OVER (ORDER BY product_name)
FROM
products
WHERE
ROW_NUMBER BETWEEN 6 AND 10;
因为窗口函数(如
row_number()
)应用于查询结果(在您的情况下,这是内部查询),即WHERE
子句(not语句)已经生效之后。因此,该变量在命名空间中不存在,除非由内部查询返回,否则无法引用。有趣。