ROWNUM
最近更新时间: 2024-10-17 17:10:00
ROWNUM是Oracle中对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 ROWNUM是对符合条件结果的序列号。它总是从1开始排起的。
TDSQL PG支持ROWNUM伪列用法。
使用限制
使用ROWNUM时需要注意事项:
ROWNUM是数据库从数据文件或缓冲区中读取数据的顺序,所以rownum>n(n>=1)、rownum between n(n>1) and m是得不到数据的。
不能使用ROWNUM做为字段名称。
语法
SELECT [ROWNUM,]column1,... FROM table1...WHERE ROWNUM [< |<= ] n [ and ...];
示例
postgres=# create table t1(f1 int,f2 varchar2(16));
CREATE TABLE
postgres=# insert into t1 values (1,'ONE');
INSERT 0 1
postgres=# insert into t1 values (2,'TWO');
INSERT 0 1
postgres=# insert into t1 values (3,'THREE');
INSERT 0 1
postgres=# insert into t1 values (4,'FOUR');
INSERT 0 1
postgres=# insert into t1 values (5,'FIVE');
INSERT 0 1
postgres=# insert into t1 values (6,'SIX');
INSERT 0 1
postgres=# insert into t1 values (7,'SEVEN');
INSERT 0 1
postgres=# select * from t1 order by f1;
f1 | f2
----+-------
1 | ONE
2 | TWO
3 | THREE
4 | FOUR
5 | FIVE
6 | SIX
7 | SEVEN
(7 rows)
postgres=# select rownum,f1,f2 from t1 where f1>5;
rownum | f1 | f2
--------+----+-------
1 | 6 | SIX
2 | 7 | SEVEN
(2 rows)
ROWNUM从1开始。
postgres=# select rownum,f1,f2 from t1 where rownum<2;
rownum | f1 | f2
--------+----+-----
1 | 1 | ONE
(1 row)
只显示一行数据。
postgres=# select rownum,f1,f2 from t1 where rownum>=1;
rownum | f1 | f2
--------+----+-------
1 | 1 | ONE
2 | 2 | TWO
3 | 5 | FIVE
4 | 6 | SIX
5 | 3 | THREE
6 | 4 | FOUR
7 | 7 | SEVEN
(7 rows)
显示全部数据。
postgres=# select rownum,f1,f2 from t1 where rownum between 1 and 2;
rownum | f1 | f2
--------+----+-----
1 | 1 | ONE
2 | 2 | TWO
(2 rows)
postgres=# select rownum,f1,f2 from t1 where rownum between 2 and 3;
rownum | f1 | f2
--------+----+----
(0 rows)
rownumbetween 如果大于1,查询结果为空,因为ROWNUM总是从1开始。