--1
(select * , row_number() over (order by columnname) as tempcolumn
from tablename )
--2
select * , row_number() over (order by defid) as tempcolumn
from fields
where tempcolumn between 1 and 2
第一个查询将为整个表添加一个新列。
我需要在检查tempcolumn的范围之后显示结果。
我尝试的第二个查询抛出了一个错误,如TunStar不存在。
最佳答案
可以使用子查询:
SELECT * FROM (
select *,ROW_NUMBER() OVER(ORDER BY columnname) as tempcolumn
from tablename) sub
WHERE tempcolumn <= 2;
不能在同一级别的
SELECT
子句中使用WHERE
中的别名,也不能将ROW_NUMBER()
用作WHERE
的一部分。更多信息:
PostgreSQL: using a calculated column in the same query
Why no windowed functions in where clauses?