多个条件mySql

时间:2015-08-04 23:55:35

标签: mysql

我试图找到所有不包含三个字符串的行,“加拿大”,“美国”和“美国”,这就是我所拥有的

SELECT 
    * 
FROM 
    `Table` 
WHERE 
    `address` LIKE "%United States%" = 0
    OR `address` LIKE "%USA%" = 0
    OR `address` LIKE "%Canada%" = 0

因此,如果它有“加拿大”或“美国”或“美国”,我不会出现它。它适用于如果有这样的

 SELECT 
    * 
FROM 
    `Table` 
WHERE 
    `address` LIKE "%United States%" = 0

然后我得到了所有没有“美国”的东西,但它不适用于所有三个?

由于

2 个答案:

答案 0 :(得分:2)

首先,我认为您应该使用NOT LIKE代替LIKE = 0,但主要问题是您使用OR作为负面条件,而不会给您带来结果想。你应该使用AND。

WHERE 
`address` NOT LIKE "%United States%"
AND `address` NOT LIKE "%USA%"
AND `address` NOT LIKE "%Canada%"

你得到了意想不到的结果,因为如果这是OR的工作方式。如果它符合您情况中的任何三种情况,即使它与其他两种情况不匹配。因此,其中包含'USA'的字符串无法与LIKE "%USA%"条件匹配,但它们确实与其他两个匹配,并且由于至少有一个OR条件匹配,因此返回该结果。

使用AND代替OR,您应该得到您期望的结果。

答案 1 :(得分:0)

WHERE $ targeted_column!=' $ prohibited_words'