bak*_*048 83
Postgresql> 8.4
SELECT
row_number() OVER (ORDER BY col1) AS i,
e.col1,
e.col2,
...
FROM ...
Run Code Online (Sandbox Code Playgroud)
小智 22
我刚刚在Postgres 9.1中测试了一个接近Oracle ROWNUM的解决方案:
select row_number() over() as id, t.*
from information_schema.tables t;
Run Code Online (Sandbox Code Playgroud)
小智 16
Postgresql有限制.
Oracle的代码:
select *
from
tbl
where rownum <= 1000;
Run Code Online (Sandbox Code Playgroud)
同样在Postgresql的代码中:
select *
from
tbl
limit 1000
Run Code Online (Sandbox Code Playgroud)
如果你只想要一个号码回来试试这个.
create temp sequence temp_seq;
SELECT inline_v1.ROWNUM,inline_v1.c1
FROM
(
select nextval('temp_seq') as ROWNUM, c1
from sometable
)inline_v1;
Run Code Online (Sandbox Code Playgroud)
您可以通过inline_v1 SQL添加订单,以便您的ROWNUM对您的数据具有一些连续的含义.
select nextval('temp_seq') as ROWNUM, c1
from sometable
ORDER BY c1 desc;
Run Code Online (Sandbox Code Playgroud)
可能不是最快的,但如果你真的需要它,它是一个选择.