作者:mobiledu2502860837 | 来源:互联网 | 2023-05-18 03:49
语句如下select*fromtableT1wheret1.STARTDATE<GETDATE()AND(t1.ENDDATEISNULLORt1.ENDDATE&g
语句如下 select * from table T1 where t1.STARTDATE<=GETDATE() AND (t1.ENDDATE IS NULL OR t1.ENDDATE>=GETDATE())
现在我要选出所有不符合where条件的反集合,用伪代码就是
where
!(t1.STARTDATE<=GETDATE() AND (t1.ENDDATE IS NULL OR t1.ENDDATE>=GETDATE()))
但是T-SQL报错,求解释...
PS.我不愿意把所有的AND改成OR。。。因为实际的语句比这个要复杂得多,这个只是实际语句的一部分抽取。
8 个解决方案
没有这么用的
你可以得到结果集后嵌套一下 然后 not exists
假設ID為Table的主鍵。
select * from table T2
where not exists (
select * from table T1 where T2.id=T1.id and t1.STARTDATE<=GETDATE() AND (t1.ENDDATE IS NULL OR t1.ENDDATE>=GETDATE()))