子查询中的 UNION

您可在 WHERE 子句、FROM 子句之内的 SELECT 语句的子查询中,以及在集合子查询中使用 UNION 和 UNION ALL 运算符。然而,在此 GBase 8s 版本中,在下列上下文中不支持包括 UNION 或 UNION ALL 的子查询:

要获取更多关于集合子查询的信息,请参阅 集合子查询。要获取更多关于 FOR UPDATE 子句的信息,请参阅 FOR UPDATE 子句

在组合的子查询中,数据库服务器可仅在其符合条件的表引用的范围内解析列名称。例如,下列查询返回错误:
SELECT * FROM t1 WHERE EXISTS
        (SELECT a FROM t2
        UNION
        SELECT b FROM t3 WHERE t3.c IN
        (SELECT t4.x FROM t4 WHERE t4.4 = t2.z));

在此,不可解析最内部的子查询 t2.z,因为 z 发生在表引用 t2 的引用范围之外。在最内部的子查询中,仅可解析属于 t4t3t1 的列引用。表引用的范围向下扩展通过子查询,但不穿过 UNION 运算符到兄弟的 SELECT 语句。