我有一个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和数组?
我哪里出错?
答案 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)