首页 > 解决方案 > 与 UNION 相比,INTERSECT 是否具有更高的优先级?

问题描述

如果我们考虑三个单列表,每个有两行:A = (1, 2), B = (2, 3), C = (3, 4)。然后,如果我们尝试UNIONINTERSECT一起使用括号,结果是非常一致的:

但是,简单明了的...

我已经在几个数据库(SQL Fiddle)上尝试过,我凭经验得到的是:

不知道有没有这方面的官方定义?我浏览了 SQL-92 规范,但找不到关于该主题的任何内容。

标签: sqlunionintersect

解决方案


Oracle 在其文档中有此解释性说明:

为了符合新兴的 SQL 标准,Oracle 的未来版本将赋予INTERSECT运算符比其他集合运算符更高的优先级。INTERSECT因此,在将运算符与其他集合运算符一起使用的查询中,您应该使用括号来指定求值顺序。

所以,Oracle 至少认为相等优先级是不符合标准的。

作为说明:我经常发现标准如此难以理解,以至于这样的提示比试图破译实际文本更简单。


推荐阅读