1

私はSQLクエリがどのように実行されるかを解明しようとしていますが、少しつまずきました。

以下に類似したwhere句が使用されている場合:

AまたはBおよびC

これは、以下のいずれかを意味する可能性があります

(AまたはB)AND C

また

A OR(B AND C)

ほとんどの場合、結果は同じですが、クエリ対象のセットに{A}のみが含まれている場合、最初のバリアントは空の結果セットを返し、2番目のバリアントは{A}を返します。SQLは実際には1つの結果を返します。

クエリがどのように構築されているかを理解するのに役立つ洞察を知っている(またはリンクしている)人はいますか?

ケチャップ

4

4 に答える 4

2

MSDNによると、順序は次のとおりです。

  1. 〜(ビット単位ではありません)

  2. (*)(乗算)、/(除算)、%(モジュロ)

  3. (+)(Positive)、-(Negative)、+(Add)、(+ Concatenate)、-(Subtract)、&(Bitwise AND)、^(Bitwise Exclusive OR)、| (ビットごとのOR)

  4. =、>、<、> =、<=、<>、!=、!>、!<(比較演算子)

  5. いいえ

  6. ALL、ANY、BETWEEN、IN、LIKE、OR、SOME

  7. =(割り当て)

于 2012-04-20T10:16:59.703 に答える
2

ANDよりも優先順位が高い(ドキュメントからの)知識では、連言標準形(「節の連続」)で節のOR述語を書くことを目指す必要があります。WHEREAND

意図が

( A OR B ) AND C

それからそれをこのように書いてください、そしてすべてが良いです。

ただし、意図が

A OR ( B AND C )

次に、連言標準形をもたらす分配法則を適用することをお勧めします。

( P AND Q ) OR R   <=>  ( P OR R ) AND ( Q OR R )    

あなたの場合:

A OR ( B AND C ) <=>  ( A OR B ) AND ( A OR C )
于 2012-04-20T10:59:12.733 に答える
0

ANDOR異なる前例があります。

優先順位レベルを参照してください

于 2012-04-20T10:17:21.403 に答える
0

SQL-Server(タグ)の場合、ここに優先順位がありますhttp://msdn.microsoft.com/en-us/library/ms190276.aspxしかし..与えられた正確な結果セットについて心配している場合は、確かにそうすべきです。 ()サブセットの操作を開始します。

于 2012-04-20T10:17:32.770 に答える