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

SQL多列过滤AND/OR运算符使用问题:精准筛选指定数据

SQL查询条件修正方案

需求说明

需要提取满足以下所有核心条件的数据:

  • Technology 等于 'IT',且 Date 在 2021-07-01 至 2022-09-10 区间内
  • 同时满足以下任一子条件:
    • Modifier 为 'G11' 或 'G7'
    • Service 为 'phys' 或 'oper'(需注意大小写匹配问题)

示例数据

Technology modifier Date      service
IT.          95.    2021-07-01.  Phys
Cse.         G5.    2021-09-09.  Tec
Mech.        GT.    2022-08-07.  Tec
IT.          G11.   2022-09-06.  Tec
IT.          G7.    2022-08-07.  Oper
IT.          GR.    2022-06-26.  Tec

预期提取结果

Technology  modifier Date      Service
IT.         95.    2021-07-01.   Phys
IT.         G11.    2022-09-06   Tec
IT.         G7.     2022-08-07.  Oper

原SQL问题分析

你写的SQL语句中,OR 的优先级低于 AND,导致条件逻辑被拆解为:(Technology='IT' AND 日期符合) OR Modifier符合 OR Service符合,这会把非IT技术但Modifier/Service符合的数据也筛选出来,不符合需求。

修正后的SQL语句

WHERE
Technology = 'IT'
AND
date BETWEEN '2021-07-01' AND '2022-09-10'
AND
(
    Modifier IN ('G11', 'G7')
    OR
    LOWER(Service) IN ('phys', 'oper')
)

修正说明

  1. 将所有子条件(Modifier、Service相关)用括号包裹,确保它们是一个整体判断单元
  2. 整体子条件与前面的 Technology='IT' 和日期条件用 AND 连接,保证必须先满足核心的IT技术和日期范围要求
  3. 加入 LOWER(Service) 是为了兼容示例数据中首字母大写的情况,避免因大小写不匹配漏掉数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:41:09