如何仅排除sales表中type=coverage且flag=1的数据行?
排除指定条件数据行的SQL写法
要仅排除type等于'coverage'且flag等于1的数据行,有两种常用的SQL写法,效果完全一致:
写法一:用NOT包裹组合条件
直接明确排除同时满足两个条件的行:
SELECT salesid, flag, type FROM sales WHERE NOT (type = 'coverage' AND flag = 1);
写法二:展开逻辑条件
利用逻辑运算等价转换,把排除条件拆成“不满足type=coverage”或者“不满足flag=1”:
SELECT salesid, flag, type FROM sales WHERE type != 'coverage' OR flag != 1;
这两种写法都会保留所有不同时满足type='coverage'和flag=1的数据行——比如type为coverage但flag是0、type不是coverage不管flag是0还是1的情况,都会被正常查询出来。
内容的提问来源于stack exchange,提问作者daxnewbie
相关产品推荐
相关产品推荐

