sql 中NOT IN 的用法

LCAAA 2007-07-31 05:56:02
SELECT *
FROM 业户档案
WHERE (许可证批准日期 > CONVERT(DATETIME, '2007-02-01', 102)) AND
(业户档案.id NOT IN
(SELECT 业户id
FROM 车辆基础档案))

查询出来为什么没有数据???
...全文
2942 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
OracleRoob 2007-08-01
  • 打赏
  • 举报
回复
--估计你的 车辆基础档案 表中 业户id 存在为null的数据,

--这样:

SELECT *
FROM 业户档案
WHERE (许可证批准日期 > CONVERT(DATETIME, '2007-02-01', 102)) AND
(业户档案.id NOT IN
(SELECT 业户id
FROM 车辆基础档案
where 业户id is not null)) --加上这个条件
LCAAA 2007-08-01
  • 打赏
  • 举报
回复
谢谢各位帮忙。
hellowork 2007-08-01
  • 打赏
  • 举报
回复
SQLSERVER规定:使用NOT IN用于子查询时,子查询的结果中不能有NULL,所以必须在子查询中排除NULL的情况.
paoluo 2007-07-31
  • 打赏
  • 举报
回复
或者這個試試看

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
昵称被占用了 2007-07-31
  • 打赏
  • 举报
回复
SELECT *
FROM 业户档案 a
WHERE 许可证批准日期 > CONVERT(DATETIME, '2007-02-01') AND
not exists (SELECT 1
FROM 车辆基础档案 where 业户id=a.id)

paoluo 2007-07-31
  • 打赏
  • 举报
回复
語句沒有問題,檢查下表中有沒有合適的數據吧。
昵称被占用了 2007-07-31
  • 打赏
  • 举报
回复
Try:

SELECT *
FROM 业户档案 a
WHERE (许可证批准日期 > CONVERT(DATETIME, '2007-02-01', 102)) AND
not exists (SELECT 1
FROM 车辆基础档案 where 业户id=a.id)
mengnnou 2007-07-31
  • 打赏
  • 举报
回复
不知道
昵称被占用了 2007-07-31
  • 打赏
  • 举报
回复
列出数据看看

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧