12

私が現在行っているコースでは、次のように WHERE 句で括弧を使用しています。

SELECT bar
FROM   Foo
WHERE (CurrentState = 'happy');

これは標準SQLですか?
そうでない場合、なぜそれらを使用するのですか?

私が持っているDate & Darwenの本では使われていないようです.


編集

明確にするために-1992年のSQL標準について言及しています

4

3 に答える 3

21

はい。かっこを使用して where 句のコンポーネントをバインドできます。これはあなたの例では必要ありませんが、複数のandandorコンポーネントがある場合は、操作の正しい順序を確保するため、または単にクエリを自己文書化するために括弧が必要になる場合があります。

例 1:

select *
from foo
where 
   (class='A' and subclass='B')
   or (class='C' and subclass='D')

and例 1 では、は よりも厳密にバインドされるため、括弧は厳密には必要ありませんorが、以下の例 2 のように、複数のor条件を で結び付けたand場合、正しい結果を得るために括弧が必要になります。

例 2:

select *
from foo
where 
   (class='A' or class='B')
   and (subclass='C' or subclass='D')

どちらの場合でも使用します。クエリ オプティマイザーと同じように頭の中で SQL を解析する必要がないためです。

于 2013-04-20T16:42:13.130 に答える
5

それらはオプションです。これらは、より複雑な WHERE ステートメントに適しています。

... WHERE (created > '2012-10' AND created < '2013-01') 
OR (modified > '2012-10' AND modified < '2013-01')
于 2013-04-20T16:42:00.020 に答える
4
于 2013-04-20T16:41:26.617 に答える