2016-05-21 52 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 != '';