mySql:带有`OR`和`AND`的`SELECT``语句

时间:2011-07-08 16:06:32

标签: mysql sql

我很困惑为什么我要从查询中返回行...

这是查询,它在单个表中搜索字符串的存在。

SELECT * 
  FROM `donor` 
 WHERE `col1` LIKE '%test%' 
    OR `col2` LIKE '%test%' 
    OR `col3` LIKE '%test%' 
    OR `col4` LIKE '%test%' 
   AND `delete` = 0

最后一行AND delete = 0是否返回“删除”列为“1”的行?有没有人知道为什么会这样?

2 个答案:

答案 0 :(得分:4)

重写WHERE子句,如下所示:

SELECT * FROM `donor` WHERE 
(`col1` LIKE '%test%' OR 
`col2` LIKE '%test%' OR 
`col3` LIKE '%test%' OR 
`col4` LIKE '%test%')
AND `delete` =0

您希望将第一组标准放在一起,然后执行AND操作。

答案 1 :(得分:1)

您需要将这些条件组合在括号()中。试试这个:

SELECT * FROM `donor` WHERE 
(`col1` LIKE '%test%' OR 
`col2` LIKE '%test%' OR 
`col3` LIKE '%test%' OR 
`col4` LIKE '%test%') AND
`delete` =0