GBase 8s 支持在 SELECT 查询和子查询的 FROM 子句中表表达式的 ANSI/ISO 标准语法,替代 GBase 8s 扩展集合子查询语法。在 10.00 和更早的版本中需要关键字 TABLE 和 MULTISET。支持对 SQL 的 ANSI/ISO 标准的这些扩展,但在 SELECT 语句的 FROM 子句中不再需要集合子查询。
SELECT * FROM TABLE(MULTISET(SELECT col1 FROM tab1 WHERE col1 = 100)) AS vtab(c1), (SELECT col1 FROM tab1 WHERE col1 = 10) AS vtab1(vc1) ORDER BY c1; SELECT * FROM (SELECT col1 FROM tab1 WHERE col1 = 100) AS vtab(c1), (SELECT col1 FROM tab1 WHERE col1 = 10) AS vtab1(vc1) ORDER BY c1;
SELECT * FROM (select col1 FROM tab1 WHERE col1 = 100) AS vtab(c1), TABLE(MULTISET(SELECT col1 FROM tab1 WHERE col1 = 10)) AS vtab1(vc1) ORDER BY c1;
集合子查询必须通过两种格式的圆括号定界,但紧跟在 TABLE 关键字之后并括在 MULTISET 集合子查询规范的圆括号(( ))的外部集是对 ANSI/ISO 语法的扩展。此 ANSI/ISO 语法仅在 SELECT 语句的 FROM 子句中是有效的。在任何其他上下文中,您不可省略来自集合子查询规范的这些关键字和圆括号。
FROM 子句中的集合子查询不可包括相关的表引用,也不可包括 LATERAL 关键字。