用于集合派生表的符合 ISO 的语法

集合派生的表这一节中的查询示例通过使用 TABLE 关键字后面(括号内)跟 SELECT 语句来指定集合派生的表。该语法是对 SQL 语言的 ANSI/ISO 标准的 GBase 8s 扩展。

但是,在(且仅在)SELECT 的 FROM 子句中,可以通过指定子查询来代替使用 SQL 符合 ANSI/ISO 标准的语法,在不使用 TABLE 关键字或嵌套括号的情况下,来定义集合派生的表。

下列查询在逻辑上等价于 图 3,并为集合派生的表 c_table 指定拍摄了列表 s_months_amount

图: 查询

SELECT * FROM (SELECT sales FROM sales_rep 
          WHERE sales_rep.rep_num = 102) c_table(s_month, s_amount);

图: 查询结果

s_month         s_amount 
            
            1998-03           $53.22
            1998-04           $18.22
GBase 8s 扩展语法中一样,声明派生表或其列的名称是可选的,而不是必需的。下列查询对外部查询的 FROM 子句使用符合ANSI/ISO 标准的语法,并产生与图 5相同的结果:

图: 查询

SELECT * FROM (SELECT sales FROM sales_rep 
          WHERE sales_rep.rep_num = 102);

图: 查询结果

month             amount 
              
              1998-03           $53.22
              1998-04           $18.22