使用联合联接的查询需要 Oracle 联合说明



下面是一个类似于我正在运行的联合查询的示例。 我有一个关于别名表xyz_1的问题。oracle如何处理与联合一起创建的此类别名表?Oracle 是否在不同的 SGA 中运行这两个语句,因此它们彼此不可见?

从中选择 *abc,(从 xyx 中选择 a,其中 c='yes') xyz_1哪里abc.col_1 = xyz_1.col_1联盟从中选择 *abc,(从 xyx 中选择 a,其中 c='no') xyz_1哪里abc.col_1 = xyz_1.col_1

UNION 是一个集合运算符,其功能是组合两个查询的结果。两个查询都是独立执行的,否则可以在两个查询中使用相同的表别名,例如,通常在子查询中所做的那样。使用 UNION 时的唯一约束是两个查询必须返回相同数量的字段,并且具有相似的数据类型(考虑到可能发生隐式转换)。

Oracle 文档没有提到对子查询中混叠的任何限制:

您可以使用集合运算符 UNION、ALL UNION ALL、INTERSECT 和 MINUS 组合多个查询。所有集合运算符具有相同的优先级。如果 SQL 语句包含多个集合运算符,则 Oracle 数据库将从左到右计算它们,除非括号明确指定了另一个顺序。

最新更新