2016-05-21 92 views
1

我試圖找出這個任務的順序:MySQL查詢/操作

列表中的每個種馬的所有細節,如果顏色信息不爲空或不爲空。

表:

enter image description here

下似乎並沒有工作,我不斷獲取的母馬信息,以及:

SELECT * FROM horse 
WHERE (gender='S') 
AND colour IS NOT NULL 
or NOT colour=''; 

我認爲括號意味着gender='S'會首先「觸發」,但我想我誤解了操作順序?

謝謝。

回答

0

這裏有幾個問題。首先,and具有比or更高的優先級,因此您的where子句實際上被解釋爲好像它是((gender='S') AND colour IS NOT NULL) or (NOT colour='')。其次,即使你有正確的括號,(colour IS NOT NULL NOT colour='')總是如此 - 如果colornull它不等於'',如果它是'',它不是null。所以,實際上,您只需要一系列and條件:

SELECT * 
FROM horse 
WHERE gender='S' AND 
     colour IS NOT NULL AND 
     colour != '';