GBase 8a MPP Cluster 产品手册 5 数据库管理指南 文档版本953(2022-09-15) 南大通用数据技术股份有限公司 1081 说明 分级查询子句connect by 与start with 不允许出现外层表的列; 分级查询from 子句必须是表,且必须是复制表; 分级查询可以作为子查询出现,但分级查询中不允许出现子查询; connect by 关联条件不能包含or 操作,并且必须包含父子节点间的等值条 件,等号的两边必须是不同的维度(一边包含prior,一边不包含prior); prior 是一元操作符,优先级同正负号,只能用在connect by 子句中;prior 后面不可以接伪列(level、rowid 等)、不可以接包含伪列的表达式、不 可以嵌套使用prior、不可以接聚合函数; order siblings by 只能用在分级查询语句中, 并且不能同聚合、 OLAP 函数、 ORDER BY 同时存在; 不支持实时环路判断, 只能保证最终能够检测出环路, 如果数据量太大 (如 超过十万),会耗时很长才能检测出; 最大节点数为MAX_INT(2147483647)(所有节点数); 新增三个保留字:start、level、prior; CONNECT BY 后面的condition 不允许包含subquery; 示例 示例1:level 使用在CONNECT BY 位置。 USE test; DROP TABLE IF EXISTS t1; CREATE TABLE t1(a int, b int, c char(10), d varchar(20), e varchar(5), f datetime, g decimal(6,2)) REPLICATED; INSERT INTO t1 VALUES(0,1,'DMD','kds','dmd','2013-4-1 10:23:01',1.1); INSERT INTO t1 VALUES(0,3,'DMD','cj','dmd','2013-4-1 10:23:01',2.1); INSERT INTO t1 VALUES (1,3,'DMD','lm','dmd1','2013-4-1 10:23:01',2.2); INSERT INTO t1 VALUES (1,4,'DMD','zx','dmd2','2013-4-1 10:23:01',2.3); DROP TABLE IF EXISTS t2; CREATE TABLE t2 REPLICATED AS SELECT * FROM t1; gbase> SELECT level, t1.* FROM t1 CONNECT BY NOCYCLE PRIOR b = level START WITH a = 0; +-------+------+------+------------+------+------+---------------------+------+ | level | a | b | c | d | e | f | g | +-------+------+------+------------+------+------+---------------------+------+ | 1 | 0 | 1 | DMD | kds | dmd | 2013-04-01 10:23:01 |