2016-05-23 2 views
0

У меня есть MySQL запрос, который в настоящее время выглядит следующим образом,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 быть еще в базе данных возвращаются, почему я предполагаю, что в моем mysql есть некоторая путаница?

Я хочу вернуть всех пользователей, где first_name, last_name или email LIKE являются строкой, если идентификатор пользователя не совпадает с id массивом?

Где я пошла не так?

ответ

2

Вы должны использовать круглые скобки:

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

Просто попробуйте это один:

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)