我有一个目前看起来像这样的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,因此上面没有括号的查询无法正常工作。

10-08 12:08