这两个语句的功能为什么不一样呢?

MarkIII 2004-08-12 04:07:04
1、select NM from stam_range where TYPE='查询字段' AND IFCANCEL!='Y' AND NM NOT IN (SELECT ColName FROM STAM_QUERY WHERE TYPE='查询字段' AND NAME='" + name + "')


2、select NM from stam_range where TYPE='查询字段' AND IFCANCEL!='Y' minus(SELECT ColName FROM STAM_QUERY WHERE TYPE='查询字段')



第一个得到的记录为空,
第二个得到的是正确的记录。
...全文
84 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gfso2000 2004-08-12
  • 打赏
  • 举报
回复
第二个表中的字段如果有NULL值的话,你只能得到NULL
因为NOT IN相当于: 字段1<>字段11 AND 字段2<>字段22
如果有NULL的话,相当于:字段1<>NULL AND 字段2<>NULL,这样会得不到预期的值。

大概是这样吧。
hevin 2004-08-12
  • 打赏
  • 举报
回复
NM 和 ColName两个字段类型是一样的吗?
MarkIII 2004-08-12
  • 打赏
  • 举报
回复
第一个语句是书写错误,没有那个 name 判断的。
daihaidong 2004-08-12
  • 打赏
  • 举报
回复
第一条有个"+ name + "是什么条件?
第二个没有

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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