语句如下 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因为实际的语句比这个要复杂得多,这个只是实际语句的一部分抽取。

解决方案 »

  1.   


    SELECT 1 WHERE NOT 1=1
      

  2.   

    没有这么用的你可以得到结果集后嵌套一下 然后 not exists
      

  3.   

    select * from table
    except 
    select * from table T1 where t1.STARTDATE<=GETDATE() AND (t1.ENDDATE IS NULL OR t1.ENDDATE>=GETDATE())这样
      

  4.   

    select * from table T1 
    where 
    NOT(
    t1.STARTDATE<=GETDATE() AND (t1.ENDDATE IS NULL OR t1.ENDDATE>=GETDATE())
    )
      

  5.   

    假設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()))
      

  6.   


    加个子查询 在where条件上加个 not in   或 not exists