2016-05-23 1 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の属性がマーティンされ、そのIDがまだていると私のテーブル内のユーザーを持っていますデータベースでそこに返されている、どのように私は私のMySQLでのいくつかの混乱があると仮定しています来ますか?

私は、ユーザーIDは、IDの配列と一致しない限りFIRST_NAME、LAST_NAMEまたは電子メールが文字列のようなもので、すべてのユーザーを返すようにしたいですか?私が間違っている

答えて

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

だけしてみてください、この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) 
関連する問題