是WHERE子句标准sql中的括号

why*_*heq 7 sql standards

我目前正在做的课程在其WHERE子句中使用括号,如下所示:

SELECT bar
FROM   Foo
WHERE (CurrentState = 'happy');
Run Code Online (Sandbox Code Playgroud)

这是标准的sql吗?
如果不是那么为什么要使用它们

似乎没有在我有的Date&Darwen书中使用.


编辑

只是为了澄清 - 我指的是1992年的sql标准

Pau*_*mer 13

是.您可以使用括号绑定where子句的组件.这是不是在你的榜样必要的,但如果你有多个andor组件,您可能需要括号要么确保操作的正确顺序,或者只是为了自我文档的查询.

例1:

select *
from foo
where 
   (class='A' and subclass='B')
   or (class='C' and subclass='D')
Run Code Online (Sandbox Code Playgroud)

在示例1中,parens并不是严格要求的,因为and绑定比它更紧密or,但是如果你有多个or条件绑定and你需要它来获得正确的结果,如下面的例子2所示.

例2:

select *
from foo
where 
   (class='A' or class='B')
   and (subclass='C' or subclass='D')
Run Code Online (Sandbox Code Playgroud)

我在任何一种情况下都使用它们,因为我不喜欢以与查询优化器相同的方式解析我脑中的sql - 我宁愿明确它并更快地理解它的意图.


Cla*_*ldt 5

它们是可选的。对于更复杂的WHERE语句,它们很有意义。

... WHERE (created > '2012-10' AND created < '2013-01') 
OR (modified > '2012-10' AND modified < '2013-01')
Run Code Online (Sandbox Code Playgroud)