
# Rownum
#### 算子说明
Rownum算子会生成伪列，它返回一个数字，表示从查询中获取结果的行编号。第一行的Rownum为1。可以使用Rownum关键字对查询结果的行编号进行条件过滤。通常出现在Rownum子句里。
使用Rownum有一定的约束条件：
- Rownum不可作为别名，以免SQL语句出现歧义。
- 创建索引时不可使用Rownum。
- 创建表时默认值不可为Rownum。
- Where子句中不可使用Rownum的别名。
- 在插入数据时不可使用Rownum。
- 在无表查询中不可以使用Rownum。
- Rownum不能用于Limit子句。
- Rownum不能用于EXECUTE语句的参数。
- Upsert语句不支持Rownum用做Update子句更新。
 
#### 典型场景
条件过滤语句中包含Rownum的过滤条件。
#### 示例
示例：条件过滤语句中包含Rownum的过滤条件。
```
--数据准备。 
gaussdb=# CREATE TABLE t1 ( id INT , number INT );
CREATE TABLE
gaussdb=# INSERT INTo t1 VALUES(generate_series(1,50), 1);
INSERT 0 50
gaussdb=# INSERT INTO t1 VALUES(generate_series(1,50), 2);
INSERT 0 50 
--执行结果。 
gaussdb=# EXPLAIN SELECT t1.id FROM t1 WHERE rownum > 10;
                             QUERY PLAN
--------------------------------------------------------------------
 Rownum  (cost=0.81..14.35 rows=20 width=4)
   Filter: (ROWNUM > 10::numeric)
   ->  Streaming (type: GATHER)  (cost=0.81..14.35 rows=20 width=4)
         Node/s: All datanodes
         ->  Seq Scan on t1  (cost=0.00..13.13 rows=20 width=4)
(5 rows)
--删除。
gaussdb=# DROP TABLE t1;
```
上述示例中，Rownum算子输出信息如下所示。
| 信息名称   | 含义                                                    |
|:---|:---|
| Rownum | 算子的名称。                                                |
| Filter | 过滤的rownum的谓词，示例中的ROWNUM \> 10表示，过滤的条件为显示rownum大于10的行。 |
   
