oracle中的rownum是一个虚拟列,每输出一行递增1。但是在pg中目前没有rownum虚拟列,那么如果从oracle迁移到pg该如何实现呢?
要在pg中实现rownum我们得先弄清楚oracle中的rownum有什么作用,是如何使用的。
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数。
rownum使用场景1:分页输出
oracle中分页:
SQL> select * from t1 where rownum=1;
ID
----------
1SQL> select * from t1 where rownum<3;
ID
----------
1
2
pg中分页:
pg自带的limit语法就可以很好的替代oracle中使用rownum分页的情况。
bill=# select * from t1 limit 1;
id | info
----+----------------------------------
1 | 4b6a755d1e1867cf1c49e841032df9ac
(1 row)bill=# select * from t1 limit 1 offset 1;
id | info