我有一个页面显示每个用户的 10 条消息(不要问我为什么)
我有以下代码:
SELECT *, row_number() over(partition by user_id) as row_num<br/>
FROM "posts"<br/>
WHERE row_num <= 10<br/>
它不起作用。
当我这样做时:
SELECT *<br/>
FROM (<br/>
SELECT *, row_number() over(partition by user_id) as row_num FROM "posts") as T<br/>
WHERE row_num <= 10<br/>
它确实有效。
为什么我需要嵌套查询才能看到 row_num
柱子?顺便说一句,在第一个请求中,我实际上在结果中看到了它,但不能使用 where
此列的关键字。
最佳答案
这似乎与任何查询的“规则”相同,列别名对 WHERE
子句不可见;
这也会失败;
SELECT id AS newid
FROM test
WHERE newid=1; -- must use "id" in WHERE clause
关于sql - 为什么分区需要嵌套选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18249126/