返回首页

gbase数据、南大通用产品文档:GBase8s集合派生的表

更新日期:2024年09月11日

集合派生的表使您能都处理集合表达式的元素(例如虚拟表中的行)。在 SELECT 语句的
FROM 子句中使用 TABLE 关键字来创建集合派生的表。数据库服务器支持 SELECT 、
INSERT 、UPDATE 和 DELETE 语句中的集合派生的表。
以下查询使用名为 c_table 的集合派生表访问 superstores_demo 数据库中 sales_rep 表
的 sales 列的元素。sales 列是其中两个字段 month 和amount 存储销售数据的未命名行类型
的集合。当 sales.month 等于 98-03 时,下列查询返回 sales.amount 的元素。由于内部选择
本身就是表达式,所以它不能对外部查询的每个迭代返回多个列值。外部查询指定
对 sales_rep 表的多少行进行求值。
图: 查询
SELECT (SELECT c_table.amount FROM TABLE (sales_rep.sales) c_table
WHERE c_table.month = '98-03')
FROM sales_rep;
图: 查询结果
(expression)

$47.22
$53.22
下列查询使用集合派生的表访问 sales 集合列中 rep_num 列等于 102 的元素。使用集合派
生的表,可以为表和列指定列名。如果没有为集合派生的表指定表名,那么数据库服务器
会自动创建表名。此示例为集合派生的表 c_table 指定派生列列表 s_month 和 s_amount。
图: 查询
SELECT * FROM TABLE((SELECT sales FROM sales_rep
WHERE sales_rep.rep_num = 102)) c_table(s_month, s_amount);

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 145 -

图: 查询结果
s_month s_amount

1998-03 $53.22
1998-04 $18.22
下列查询创建集合派生的表但不指定派生表或派生列名。除派生列采用 sales_rep 表中
的 sales 列的缺省自动名之外,该查询返回与图 3相同的结果。
图: 查询
SELECT * FROM TABLE((SELECT sales FROM sales_rep
WHERE sales_rep.rep_num = 102));
图: 查询结果
month amount

1998-03 $53.22
1998-04 $18.22
限制: 集合派生的表是只读的,因此它不能是 INSERT 、UPDATE 或 DELETE 语句的目标表或
可更新游标或视图的基础表。
有关集合派生的表的语法和限制的完整描述,请参阅《GBase 8s SQL 指南:语法》。

GBA-02BR-0037
错误码
错误标识
错误信息
GBA-02BR-0037

Backup data between nodes conflict,
please run 'cleanup' and try again
错误出现原因
备份数据在节点间有冲突

GBase 8a MPP Cluster 产品手册
7 附录
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1659
分析与建议
执行cleanup,清除垃圾数据,然后再进行操作

geqo_generations
参数说明:控制GEQO 使用的算法的迭代次数。
该参数属于USERSET 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:整型,0~INT_MAX。
须知:
必须至少是1,
且有用的值介于100 和1000 之间。
如果设置为0,
则基于geqo_pool_size
选取合适的值。
默认值:0