暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8a ROWID函数

VV_刺头王 2022-04-07
795

ROWID 为行号函数,返回某行数据在 data 节点上的行号信息。

两种语法形式(伪列形式和函数形式)举例:

SELECT *, ROWID, ROWID(t1) FROM t1;
SELECT * FROM t1 WHERE ROWID = 1;

功能说明:

1、ROWID 返回类型为 BIGINT,从 0 开始排号;
2、ROWID 相当于 server 给表自动添加的伪列,可以查询及使用,由 server 自动维护,不实际存储,不需要也不允许用户进行管理(如修改或创建索引等);
3、ROWID 作为保留字使用,不允许使用 ROWID 作为任何数据对象的名称(不论大小写及是否有单撇);
4、DML 不会影响原有数据的 ROWID;
5、性能方面,ROWID 与常量的简单比较,如...WHERE ROWID = 1,可以使用智能索引对 dc 进行过滤,支持的比较类型包括:>,>=,<,<=,=,<>,IS NULL,IS NOT NULL,BETWEEN,NOT BETWEEN;
6、仅 Express 引擎支持 ROWID,其他引擎执行时(如含有 ROWID)会报错。

示例 1:ROWID,ROWID(t1)。
gbase> DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected
gbase> CREATE TABLE t1(i int, j int);
Query OK, 0 rows affected
gbase> INSERT INTO t1 VALUES(2,1),(2,3),(2,3),(2,5),(3,2),(3,2),(3,2),(3,4),(3,1),(3,5);
Query OK, 10 rows affected
Records: 10 Duplicates: 0 Warnings: 0
gbase> SELECT *, ROWID, ROWID(t1) FROM t1;
+------+------+-------+-------+
| i | j | ROWID | rowid |
+------+------+-------+-------+
| 2 | 1 | 0 | 0 |
| 2 | 3 | 1 | 1 |
| 2 | 3 | 2 | 2 |
| 2 | 5 | 3 | 3 |
| 3 | 2 | 4 | 4 |
| 3 | 2 | 5 | 5 |
| 3 | 2 | 6 | 6 |
| 3 | 4 | 7 | 7 |
| 3 | 1 | 8 | 8 |
| 3 | 5 | 9 | 9 |
+------+------+-------+-------+
10 rows in set
示例 2:ROWID = 1
gbase> DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected
gbase> CREATE TABLE t1(i int, j int);
Query OK, 0 rows affected
gbase> INSERT INTO t1 VALUES(2,1),(2,3),(2,3),(2,5),(3,2),(3,2),(3,2),(3,4),(3,1),(3,5);

Query OK, 10 rows affected
Records: 10 Duplicates: 0 Warnings: 0
gbase> SELECT * FROM t1 WHERE ROWID = 1;
+------+------+
| i | j |
+------+------+
| 2 | 3 |
+------+------+
1 row in set


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论