MySQL同表查询如何编写WHERE条件排除同时满足两字段指定值的记录
问题原因
你原有查询中的(remote_id!= 1234 andcompany_id = 1)逻辑强制要求所有返回结果的company_id必须等于1,不符合你要保留其他company_id符合基础筛选条件的需求。
正确SQL写法
select * from `my_table` where -- 基础筛选条件 `status` = 1 and `amount` = 150 -- 仅排除同时满足两个条件的指定记录 and not (`remote_id` = 1234 and `company_id` = 1);
逻辑说明
- 先保留所有满足
status=1、amount=150的全量符合基础规则的记录 - 再剔除唯一需要排除的「
remote_id等于1234且company_id等于1」的单条记录,其余所有符合基础条件的记录都会被返回:包括company_id≠1的所有符合基础条件的记录,也包括company_id=1但remote_id≠1234的符合基础条件的记录。
内容的提问来源于stack exchange,提问作者Mike Aron
相关产品推荐
相关产品推荐

