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

SQL查询条件逻辑错误排查:正确过滤工单数据

问题分析与解决方案

场景与需求

现有工单数据表,包含Customer、Job字段(Customer名称唯一,Job可跨客户重复),原始数据如下:

  • Customer 1, Job 1
  • Customer 1, Job 2
  • Customer 1, Job 3
  • Customer 2, Job 1
  • Customer 2, Job 2
  • Customer 2, Job 3
  • Customer 3, Job 1
  • Customer 3, Job 2
  • Customer 3, Job 3

需要实现:排除Customer 1的所有工单,同时排除Customer 2的Job 1工单,保留其余所有数据。

原查询的问题

原执行的SQL逻辑错误:

Select *
from Table
Where Customer <> 'Customer 1'
  AND (Customer <> 'Customer 2' AND Job <> 'Job 1')

括号内的Customer <> 'Customer 2' AND Job <> 'Job 1'会过滤掉所有Customer 2的记录(因为只要Customer是2,Customer <> 'Customer 2'就不成立,整个括号条件为假),导致最终仅返回Customer 3的Job 2、Job 3数据,不符合预期。

正确SQL写法

写法一:明确排除特定组合

SELECT *
FROM Table
WHERE Customer <> 'Customer 1'
  AND NOT (Customer = 'Customer 2' AND Job = 'Job 1')

逻辑说明:先排除所有Customer 1的记录,再排除Customer 2且Job 1的特定工单,精准保留所需数据。

写法二:拆分条件使用OR

SELECT *
FROM Table
WHERE Customer <> 'Customer 1'
  AND (Customer <> 'Customer 2' OR Job <> 'Job 1')

逻辑说明:只要不是Customer 1,同时满足「不是Customer 2」或者「是Customer 2但Job不是1」,和写法一等价。

预期结果

两种写法均会返回以下数据:

  • Customer 2, Job 2
  • Customer 2, Job 3
  • Customer 3, Job 1
  • Customer 3, Job 2
  • Customer 3, Job 3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:35:21