如何编写SQL Server查询实现#temp_table的指定行精准排除?
正确SQL查询写法
你的原查询逻辑出错了:第二个条件(column2 !='jim' and column1 != 'value2')会把所有column2为jim的行都过滤掉(包括id=6的行),但你实际只需要排除**column2='jim'且column1='value2'**这一行。
以下两种写法都能满足需求:
写法一:用NOT包裹排除条件
select * from #temp_table where column2 != 'mark' and NOT (column2 = 'jim' and column1 = 'value2')
写法二:利用德摩根定律拆分条件
select * from #temp_table where column2 != 'mark' and (column2 != 'jim' OR column1 != 'value2')
这两个语句都会返回id为3、4、6的行,符合预期。
内容的提问来源于stack exchange,提问作者Ced
相关产品推荐
相关产品推荐

