SQL模糊查询标题时排除指定ID用户条件失效问题求助
SQL逻辑错误诊断与修复方案
错误原因
你的原查询核心问题出在过滤id_card的条件逻辑上:(id_card != 1 OR id_card != 5) 这个判断是恒成立的:
- 对于id_card=1的记录,
id_card !=5条件为真,OR运算只要有一个条件为真整体就为真,所以这条记录会通过过滤 - 对于任意id_card值,都不可能同时等于1和5,所以这个条件永远成立,完全起不到排除1和5的作用
你删除id_card != 5后,条件变为仅id_card !=1,自然就能排除id=1的记录,所以结果符合预期。
修复方法
有两种常用的正确写法:
写法1:将OR替换为AND
SELECT title, id_card FROM site WHERE (title LIKE "%blue%" OR title LIKE "%black%") AND (id_card != 1 AND id_card != 5) ORDER BY id_card ASC;
写法2:使用NOT IN简化语法(可读性更高)
SELECT title, id_card FROM site WHERE (title LIKE "%blue%" OR title LIKE "%black%") AND id_card NOT IN (1,5) ORDER BY id_card ASC;
两种写法的执行效果完全一致,都能正确排除id_card为1和5的记录。
内容的提问来源于stack exchange,提问作者bbl
相关产品推荐
相关产品推荐

