SQL新手求助:编写含Status2例外的Status1排除指定值SELECT查询
解决你的SQL查询需求
嘿,作为SQL新手遇到这种逻辑组合问题很正常,咱们直接来写符合你要求的查询语句:
首先,你需要的是满足两个条件中的任意一个就返回数据:
- 要么
Status2的值是'same_day'(不管Status1是什么) - 要么
Status1不在('Canceled','Cancelled')这两个取消状态里
对应的SELECT语句如下:
SELECT * FROM 你的表名 WHERE Status2 = 'same_day' OR Status1 NOT IN ('Canceled', 'Cancelled');
简单解释下逻辑:
OR关键字用来连接两个独立的条件,只要其中一个成立,这条数据就会被选中NOT IN ('Canceled', 'Cancelled')正好排除了两种拼写的取消状态,覆盖了可能的拼写差异- 当
Status2 = 'same_day'时,后面的Status1条件会被忽略,完全符合你“无论Status1取值如何均返回”的要求
如果你的 Status1 字段可能存在 NULL 值(也就是没有状态值的情况),可以稍微调整一下条件,避免NULL被过滤掉:
SELECT * FROM 你的表名 WHERE Status2 = 'same_day' OR (Status1 IS NOT NULL AND Status1 NOT IN ('Canceled', 'Cancelled'));
这样就能确保NULL值的记录也能在Status2不是same_day时被正确判断啦~
内容的提问来源于stack exchange,提问作者MIMIGA
相关产品推荐
相关产品推荐

