SQL如何对Appliances分类单独添加2016年后购买的日期过滤条件
问题原因
你现有SQL将Category = 'Appliances'和其他条件做了全局AND关联,会导致两个不符合预期的结果:
- 直接过滤掉所有非
Appliances分类的记录 - 仅保留
Appliances分类中2016年之后的购买记录
调整方案
你需要把日期的限制范围限定在Appliances分类下,非该分类的记录不需要满足日期条件,同时保留level=1、Company='COC'这两个全局必选过滤条件。
正确的写法如下:
SELECT * FROM `table` WHERE level = 1 AND Company = 'COC' AND ( Category != 'Appliances' OR (Category = 'Appliances' AND PurchaseDate > '2016-01-01') )
注意事项
- 日期值需要用引号包裹,否则部分数据库会将
2016-01-01识别为数值计算结果(2016减1减1=2014),导致日期判断逻辑错误 - 如果你的数据库中
Category存在NULL值,可根据需求调整Category != 'Appliances'的写法,比如改为Category IS NULL OR Category != 'Appliances'
内容的提问来源于stack exchange,提问作者Sam332
相关产品推荐
相关产品推荐

