当使用NOT LIKE通配符时,MySQL查询仍返回值(MySQL query still returns value when NOT LIKE wildcard is used)
我有一个查询,我正在使用通配符值和NOT LIKE,因为我正在寻找公司名称的任何变体。 我试图将NOT LIKE部分移动到WHERE语句的开头和LIKE语句之后,但两者仍然在结果中使用ABC Realty或ABC Realty,Inc。返回值? 我错过了什么?
SELECT * FROM mytable WHERE ListOfficeName NOT LIKE 'ABC Realty%' AND MLSAreaMajor LIKE 'NA01%' OR MLSAreaMajor LIKE 'NA02%' OR MLSAreaMajor LIKE 'NA03%' OR MLSAreaMajor LIKE 'NA04%' OR MLSAreaMajor LIKE 'NA05%' AND PhotoCount >= '1' AND Longitude BETWEEN -89.69 AND -72.07 ORDER BY ListPrice DESCI have a query where I'm using a wildcard value in conjunction with NOT LIKE as I'm looking for any variation of a company name. I've tried to move the NOT LIKE portion to the beginning of the WHERE statement and after the LIKE statement but both still return values with ABC Realty or ABC Realty, Inc. in the results? What am I missing?
SELECT * FROM mytable WHERE ListOfficeName NOT LIKE 'ABC Realty%' AND MLSAreaMajor LIKE 'NA01%' OR MLSAreaMajor LIKE 'NA02%' OR MLSAreaMajor LIKE 'NA03%' OR MLSAreaMajor LIKE 'NA04%' OR MLSAreaMajor LIKE 'NA05%' AND PhotoCount >= '1' AND Longitude BETWEEN -89.69 AND -72.07 ORDER BY ListPrice DESC最满意答案
您必须使用括号以包含WHERE子句的所有OR谓词:
SELECT * FROM mytable WHERE ListOfficeName NOT LIKE 'ABC Realty%' AND (MLSAreaMajor LIKE 'NA01%' OR MLSAreaMajor LIKE 'NA02%' OR MLSAreaMajor LIKE 'NA03%' OR MLSAreaMajor LIKE 'NA04%' OR MLSAreaMajor LIKE 'NA05%') AND PhotoCount >= '1' AND Longitude BETWEEN -89.69 AND -72.07 ORDER BY ListPrice DESCYou have to use parentheses in order to enclose all OR predicates of the WHERE clause:
SELECT * FROM mytable WHERE ListOfficeName NOT LIKE 'ABC Realty%' AND (MLSAreaMajor LIKE 'NA01%' OR MLSAreaMajor LIKE 'NA02%' OR MLSAreaMajor LIKE 'NA03%' OR MLSAreaMajor LIKE 'NA04%' OR MLSAreaMajor LIKE 'NA05%') AND PhotoCount >= '1' AND Longitude BETWEEN -89.69 AND -72.07 ORDER BY ListPrice DESC更多推荐
发布评论