Rownum在postgresql中
有什么办法可以在postgresql中模拟rownum吗?
Postgresql> 8.4
SELECT row_number() OVER (ORDER BY col1) AS i, e.col1, e.col2, ... FROM ...
我刚刚在Postgres 9.1中testing了一个接近Oracle ROWNUM的解决scheme:
select row_number() over() as id, t.* from information_schema.tables t;
如果你只是想要一个数字回来试试这个。
create temp sequence temp_seq; SELECT inline_v1.ROWNUM,inline_v1.c1 FROM ( select nextval('temp_seq') as ROWNUM, c1 from sometable )inline_v1;
您可以通过inline_v1 SQL添加一个订单,以便您的ROWNUM对您的数据具有一些连续的含义。
select nextval('temp_seq') as ROWNUM, c1 from sometable ORDER BY c1 desc;
可能不是最快的,但是如果你真的需要它,这是一个select。
Postgresql有限制。
Oracle的代码:
select * from tbl where rownum <= 1000;
同样在Postgresql的代码中:
select * from tbl limit 1000
Postgresql没有相当于Oracle的ROWNUM。 在许多情况下,您可以通过在查询中使用LIMIT和OFFSET来获得相同的结果。
使用限制clausule,与偏移量select行号-1,所以如果你想获得第8行所以使用:
限制1个偏移量7