mysql多个在哪里和哪里不在

时间:2016-05-23 07:58:21

标签: mysql database

我有一个mysql查询,目前看起来像这样,

select * from `users`   
where `first_name` LIKE "%Martin%" 
or `last_name` LIKE "%Martin%"   
or `email` LIKE "%Martin%" 
and `users`.`id` not in  
(186,85,184,252,256,181)

我的用户在我的表中,first_name属性为 Martin 且他们的ID为 181 但是在数据库中返回了,为什么我假设有我的mysql有些混乱?

我想要返回first_name,last_name或email是LIKE字符串的所有用户,除非用户id匹配id和数组?

我哪里出错?

2 个答案:

答案 0 :(得分:3)

你必须使用括号:

select * 
from `users`   
where (`first_name` LIKE "%Martin%" or
       `last_name` LIKE "%Martin%" or  
       `email` LIKE "%Martin%" ) and
       `users`.`id` not in (186,85,184,252,256,181)

AND优先于OR,因此上述查询没有括号无效。

答案 1 :(得分:1)

试试这个:

SELECT * 
FROM `users`   
WHERE
  ( `first_name` LIKE "%Martin%" 
     OR `last_name` LIKE "%Martin%"   
     OR `email` LIKE "%Martin%" )
AND `users`.`id` NOT IN (186,85,184,252,256,181)