我有一个目前看起来像这样的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喜欢一个字符串,除非用户id与数组的id相匹配?
我哪里出问题了?
最佳答案
您必须使用括号:
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
,因此上面没有括号的查询无法正常工作。