You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL NOT LIKE运算符功能异常求助:部分NT开头样本未被过滤

解决SQL中NOT LIKE运算符过滤不完整的问题

嘿,这问题我太熟了——根源就是逻辑运算符的优先级在捣乱!

你写的WHERE子句里,AND的优先级比OR高,所以数据库实际执行的逻辑是这样的:

先匹配 full.full_id IN ('567', '686') AND random.sample_name NOT LIKE ('NT%') 这部分,然后再把结果和 full.full_id IN ('272', '273') 的记录做OR合并。

这就导致full_id是272或273的那些记录,不管sample_name是不是以NT开头,都会被直接包含到结果里,这就是为什么还有一部分NT开头的样本没被过滤掉。而你用LIKE 'NT%'能查到所有,说明数据本身是没问题的,就是逻辑分组错了。

修正的方法很简单,给OR两边的条件加上括号,明确让数据库先执行OR的分组,再去做AND的过滤:

WHERE (full.full_id IN ('272', '273') OR full.full_id IN ('567', '686')) 
AND random.sample_name NOT LIKE ('NT%')

其实你还可以简化一下IN的写法,把所有full_id放到同一个IN列表里,逻辑更清晰:

WHERE full.full_id IN ('272', '273', '567', '686') 
AND random.sample_name NOT LIKE ('NT%')

这样修改后,就能先筛选出指定full_id的所有记录,再从中排除掉sample_name以NT开头的,正好符合你的需求~

内容的提问来源于stack exchange,提问作者nsinghphd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:46:29