单个查询中多个SQL集运算符的作用是什么?

Bel*_*Bob 3 sql teradata

我试图了解具有多个"set"运算符的现有查询发生了什么.我尝试过的各种网络搜索都没有透露任何内容,也没有我对Teradata文档的快速回顾.

这是我正在查看的查询的伪代码表示:

SELECT column from table1
UNION
SELECT column from table2
UNION
SELECT column from table3
MINUS 
   (select column from table 4)
UNION
SELECT column from table4
Run Code Online (Sandbox Code Playgroud)

我最感兴趣的是如何MINUS处理; 它是仅从table3中的前一个SELECT中减去行还是从组合结果集中减去?请注意,MINUS表达式中的括号位于我正在查看的代码中.

此外,我假设最后一个UNION不受MINUS操作的影响.

我确信我可以通过创建一些示例表来解决这个问题,但我现在无法访问数据库(试图在今天从家里完成一些工作).

仅供参考:Teradata MINUS与ANSI相同EXCEPT.

Jay*_*ayC 6

在Oracle http://docs.oracle.com/cd/B28359_01/server.111/b28286/queries004.htm

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

http://www.postgresql.org/docs/current/static/sql-select.html#SQL-EXCEPT

除非括号另有说明,否则从左到右计算同一SELECT语句中的多个EXCEPT运算符.除了与UNION绑定在同一级别.

但是,在postgresql中

http://www.postgresql.org/docs/current/static/sql-select.html#SQL-INTERSECT

除非括号另有说明,否则同一SELECT语句中的多个INTERSECT运算符将从左到右进行计算. INTERSECT比UNION绑定得更紧密.也就是说,A UNION B INTERSECT C将被读作A UNION(B INTERSECT C).

任何引号中的重点都是我自己做的......

所以,这取决于实施.