在 Postgres 的 WHERE 语句中使用 ROW_NUMBER() 函数
Using ROW_NUMBER() Function in a WHERE statement in Postgres
Postgres 中的以下作品:
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;
因为 window 函数(如 row_number()
)应用于查询的 结果(在您的情况下是内部结果),即 在之后WHERE
子句(不是声明)已经生效。
Postgres 中的以下作品:
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;
因为 window 函数(如 row_number()
)应用于查询的 结果(在您的情况下是内部结果),即 在之后WHERE
子句(不是声明)已经生效。