我有一个目前看起来像这样的 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)
我的表中有用户,名字属性为 Martin,他们的 ID 为 181 但数据库中返回了,我怎么假设有我的 mysql 中有些困惑?
我想返回名字、姓氏或电子邮件类似于字符串的所有用户,除非用户 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
,因此上面的查询没有括号不会按预期工作。
关于mysql多个where和where not in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37385579/