SQL查询WHERE条件编写:如何新增排除规则且不破坏原有查询逻辑
最终SQL实现
你可以直接在原有WHERE条件外拼接排除规则,注意用括号保证逻辑优先级即可,完全不会破坏原有查询的返回结果:
SELECT test_table.country, test_table.postcode FROM test_table WHERE -- 原有查询逻辑,括号包裹避免优先级混乱 (test_table.country LIKE 'B%' OR test_table.postcode LIKE '1%') -- 新增排除规则:仅过滤国家C开头且邮编1开头的记录 AND NOT (test_table.country LIKE 'C%' AND test_table.postcode LIKE '1%')
逻辑说明
- 原有查询条件用括号包裹,确保
OR的判断优先级不受后续AND的影响,原本符合要求的记录会全部保留 - 新增的排除规则只会精准剔除「国家首字母为C+邮编首字母为1」的特定重合记录,不会误删其他符合规则的数据
注意你提到的参考排除逻辑
test_table.country Not Like 'C%' And test_table.postcode Not Like '1%'不能直接使用,该逻辑会误排除所有国家非C开头、或邮编非1开头的记录,和你的需求完全不符。
内容的提问来源于stack exchange,提问作者Jedas
相关产品推荐
相关产品推荐

