语句如下 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因为实际的语句比这个要复杂得多,这个只是实际语句的一部分抽取。
SELECT 1 WHERE NOT 1=1
except
select * from table T1 where t1.STARTDATE<=GETDATE() AND (t1.ENDDATE IS NULL OR t1.ENDDATE>=GETDATE())这样
where
NOT(
t1.STARTDATE<=GETDATE() AND (t1.ENDDATE IS NULL OR t1.ENDDATE>=GETDATE())
)
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()))
加个子查询 在where条件上加个 not in 或 not exists