我试图找出这个任务:
如果颜色信息不为空或不为空,请列出每个种马的所有详细信息。
表:
以下内容似乎无效,我也不断获取有关母马的信息:
SELECT * FROM horse
WHERE (gender='S')
AND colour IS NOT NULL
or NOT colour='';
我以为括号表示
gender='S'
首先会“触发”,但我想我误会了操作顺序?谢谢。
最佳答案
这里有两个问题。首先,and
的优先级高于or
,因此实际上将where
子句解释为((gender='S') AND colour IS NOT NULL) or (NOT colour='')
。其次,即使您正确地加上了括号,(colour IS NOT NULL NOT colour='')
也始终为真-如果color
是null
则不等于''
,如果是''
则不是null
。因此,实际上,您只需要一系列and
条件:
SELECT *
FROM horse
WHERE gender='S' AND
colour IS NOT NULL AND
colour != '';
关于mysql - MySQL查询/操作顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37362428/