mysql多个where和where not in

标签 mysql database

我有一个目前看起来像这样的 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/

相关文章:

mysql - 查询返回重复值

mysql - 计算记录在特定状态下花费的时间

php - cURL POST,而

java - 将数据从数据库检索到我的应用程序(不工作)

php - 检查连接中是否存在记录并分配并计数

php - Bootstrap Popover 不会改变 while 循环中的值

mysql - mysql中的触发器不允许某些列对重复值

database - 跟踪客户并预订访问的私有(private)网站

mysql - 添加第四个表连接时结果减少

mysql - 为什么当用户没有提交时 MySQL 查询返回 null?