日期:2014-05-18  浏览次数:20556 次

sql 中NOT IN 的用法
SELECT   *
FROM   业户档案
WHERE     (许可证批准日期   >   CONVERT(DATETIME,   '2007-02-01 ',   102))   AND  
            (业户档案.id   NOT   IN
                    (SELECT   业户id
                  FROM   车辆基础档案))  

查询出来为什么没有数据???

------解决方案--------------------
Try:

SELECT *
FROM 业户档案 a
WHERE (许可证批准日期 > CONVERT(DATETIME, '2007-02-01 ', 102)) AND
not exists (SELECT 1
FROM 车辆基础档案 where 业户id=a.id)

------解决方案--------------------
語句沒有問題,檢查下表中有沒有合適的數據吧。
------解决方案--------------------
SELECT *
FROM 业户档案 a
WHERE 许可证批准日期 > CONVERT(DATETIME, '2007-02-01 ') AND
not exists (SELECT 1
FROM 车辆基础档案 where 业户id=a.id)


------解决方案--------------------
或者這個試試看

SELECT A.*
FROM 业户档案 A
Left Join 车辆基础档案 B On A.id = B.业户id
WHERE (A.许可证批准日期 > CONVERT(DATETIME, '2007-02-01 ', 102)) AND B.业户id Is Null

------解决方案--------------------
--估计你的 车辆基础档案 表中 业户id 存在为null的数据,

--这样:

SELECT *
FROM 业户档案
WHERE (许可证批准日期 > CONVERT(DATETIME, '2007-02-01 ', 102)) AND
(业户档案.id NOT IN
(SELECT 业户id
FROM 车辆基础档案
where 业户id is not null)) --加上这个条件
------解决方案--------------------
SQLSERVER规定:使用NOT IN用于子查询时,子查询的结果中不能有NULL,所以必须在子查询中排除NULL的情况.