儘管您的文章中有不完整的信息,但我仍然會對此進行刺探。
只有AND
運算符的鏈將要求每個表達式爲每個返回的行計算true。這與重力一樣重要。
簡而言之,AND
的作品,它只是不像你所期望的那樣工作。
這裏可能會發生什麼是你有你的查詢中的其他表達式,你不覺得與問題相關。
例如
SELECT Column1,
Column2,
Column3
FROM myTable
WHERE Column1 = 'abc'
AND Column2 = 123
AND column3 = 'zyx'
OR Column3 = 'xyz'
在邏輯上是完全不同的:
SELECT Column1,
Column2,
Column3
FROM myTable
WHERE Column1 = 'abc'
AND Column2 = 123
AND (column3 = 'zyx'
OR Column3 = 'xyz')
在第一個例子操作的普遍接受的訂單將評估您的查詢作爲
(Column1 = 'ABC AND Column2 = 123 AND column3 = 'zyx')
意味着所有以上必須爲真
OR Column3 = 'xyz'
在情況1中,無論AND
操作是否評估爲true,都會返回列3等於'xyz'的任何行。你是說,如果「操作」或「或」操作是真的,請給我一行。
如果你想SQL以不同的方式評估你的表現,你需要使用括號作爲的情況下,2
欲瞭解更多信息以指定優先級,看看msdn operator precedence你會看到與運算的手術室不久評估。
此外,如果您發佈您的實際查詢,我們可以在我們的幫助中更具體地確定問題出在哪裏。
我們確實需要您實際使用的條件,而不是像*這樣的*。這很有可能是因爲你的條件有誤,而不是'AND'不能正常工作 – Lamak 2013-02-28 20:15:51
@Lamak是的。看起來這似乎更可能是操作順序問題 – swasheck 2013-02-28 20:19:07
如果可能,您需要用一些實際數據來澄清這一點。 – JNK 2013-02-28 20:19:53