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

SQL如何筛选表数据,排除status为1且type为X的客户记录

SQL查询语句修正方案

原语句错误点

  • 逻辑运算符优先级错误:SQL中AND优先级高于OR,原语句实际执行逻辑会被解析为c.status = 1 OR (c.status = 3 AND c.status !=1 AND c.type !=x ),和需求完全不符
  • 字符串值未加引号:type字段存储的是字符串类型值,X需要用单引号包裹,否则会被识别为字段名触发报错
  • 逻辑条件偏离需求:你需要的是仅排除同时满足status=1且type=X的记录,原条件没有匹配这个逻辑

正确写法

按照你的需求,最直观的实现是直接对要排除的组合条件取反:

SELECT * FROM client c
WHERE NOT (c.status = 1 AND c.type = 'X')

如果不习惯用NOT包裹组合条件,也可以按照德摩根定律拆成等价的正向条件:

SELECT * FROM client c
WHERE c.status != 1 OR c.type != 'X'

注:以上两种写法逻辑完全等价,执行结果一致,会排除唯一符合status=1且type=X的id=100记录,返回id为101、102、103、104的四条记录。

如果你需要最终结果仅返回id为101、102、104的三条记录,说明你还需要额外排除status=4的记录,调整后语句如下:

SELECT * FROM client c
WHERE NOT (c.status = 1 AND c.type = 'X') AND c.status != 4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:27:00