假设我有一个查询
select * from A
Except
select * from B
union all
select * from B
except
select * from A查询处理方式如下
select *
from
(
select * from A
Except
select * from B
) a
union all
(
select * from B
Except
select * from A
) b如何在sql中定义处理顺序。它在任何情况下都会像这样处理吗?
select * from A
Except
select * from
(
select * from B
union all
select * from B
) a
except
select * from A发布于 2017-01-19 17:08:52
UNION和EXCEPT具有相等的优先级,但它们将从左到右绑定,这意味着它们在处理时按照“从左到右”的顺序进行计算。
来自@SeanLange的URL (TL;DR),值得注意:
如果在表达式中与其他运算符一起使用(或除外)交叉,则在以下优先级的上下文中对其进行计算:
发布于 2017-01-19 17:07:36
除了和UNION被处理为“从左到右”。这意味着不使用任何括号来确定它们将按照它们在sql中出现的顺序进行处理。
https://stackoverflow.com/questions/41747501
复制相似问题