我试图找出这个任务:

如果颜色信息不为空或不为空,请列出每个种马的所有详细信息。

表:

mysql - MySQL查询/操作顺序-LMLPHP

以下内容似乎无效,我也不断获取有关母马的信息:

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='')也始终为真-如果colornull则不等于'',如果是''则不是null。因此,实际上,您只需要一系列and条件:

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

关于mysql - MySQL查询/操作顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37362428/

10-13 00:46