我目前正在做的课程在其WHERE子句中使用括号,如下所示:
SELECT bar
FROM Foo
WHERE (CurrentState = 'happy');
Run Code Online (Sandbox Code Playgroud)
这是标准的sql吗?
如果不是那么为什么要使用它们
似乎没有在我有的Date&Darwen书中使用.
编辑
只是为了澄清 - 我指的是1992年的sql标准
Pau*_*mer 13
是.您可以使用括号绑定where子句的组件.这是不是在你的榜样必要的,但如果你有多个and和or组件,您可能需要括号要么确保操作的正确顺序,或者只是为了自我文档的查询.
例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 - 我宁愿明确它并更快地理解它的意图.
它们是可选的。对于更复杂的WHERE语句,它们很有意义。
... WHERE (created > '2012-10' AND created < '2013-01')
OR (modified > '2012-10' AND modified < '2013-01')
Run Code Online (Sandbox Code Playgroud)