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

SQLite中Where子句多条件下OR语句正确用法及数据筛选问题

问题原因

你的查询返回Negative数据是因为逻辑运算符优先级错误:SQL中AND优先级高于OR,原WHERE条件实际等价于:

(TEST_RESULT = 'POSITIVE' AND Code = 'U071') 
OR Code = 'Z20828' 
OR DIAGNOSIS_CD = 'Z20822' 
OR DIAGNOSIS_CD = 'R112' 
OR DIAGNOSIS_CD = 'R509'

这会让满足后面任意OR条件的记录(无论TEST_RESULT是否为Positive)都被选中,同时原语句还存在字段错误(误用DIAGNOSIS_CD)、包含需求外的Code值、不必要的GROUP BY导致数据丢失等问题。

修正后的SQL语句
CREATE TABLE table1 AS
SELECT 
    ID,
    TEST_RESULT,
    START_DATE,
    END_DATE,
    Code
FROM table0
WHERE 
    TEST_RESULT = 'Positive' 
    AND Code IN ('U071', 'R12', 'Z515', 'R509')
ORDER BY ID, START_DATE;
关键修正点
  • 逻辑条件严谨性:用AND同时绑定TEST_RESULT和Code的筛选规则,通过IN简化多Code值的判断,彻底避免OR优先级导致的逻辑漏洞
  • 匹配需求字段与值:移除无关的DIAGNOSIS_CD条件,只保留你指定的Code集合
  • 保留目标记录:删除原语句中的GROUP BY(它会合并同ID同START_DATE的记录,不符合你保留多条ID=2记录的需求),通过ORDER BY ID, START_DATE实现同一ID的记录合并为一组展示的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:25:27