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语句)已经生效之后。

因此,该变量在命名空间中不存在,除非由内部查询返回,否则无法引用。有趣。