问题描述
以下在 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,ROW_NUMBER () OVER (ORDER BY product_name)
FROM
products
WHERE
ROW_NUMBER BETWEEN 6 AND 10;
解决方法
因为像 row_number()
这样的窗口函数被应用于查询的 result(在你的情况下是内部的),即 after { {1}} 子句(不是语句)已经生效。