易截截图软件、单文件、免安装、纯绿色、仅160KB

Oracle中NOT IN的问题

     今天在开发的时候需要查询数据库中哪些学生有多个学号,写的sql如下:
     select * from(
  select count(t1.xh) as xhs,t2.uuid,t3.xm as xsxm,t3.sfzjh, t1.xjzt as xjzt from hust_xs_jb t1
   INNER JOIN hust_xx_identity t2 on t1.sfid= t2.sfid
    INNER JOIN hust_xx_profile t3 on t2.uuid=t3.uuid group by t2.uuid ,t3.xm, t3.sfzjh, t1.xjzt order by t3.xm) t
  where xhs>=2 and xjzt not in('15','17','19','21','30','31','32','33','34','35','36','37','38','39','40','51','52','53','54')
查出的数据为空,但是去掉where条件中的第二个条件(也就是NOT IN条件)却能查出31条数据,且其中只有一条的数据的XJZT字段为33,其他的都为null,应该查出30条数据啊,这是为什么呢?难道NOT  IN会将null值过滤掉?于是将sql稍加修改:
     select * from(
  select count(t1.xh) as xhs,t2.uuid,t3.xm as xsxm,t3.sfzjh, t1.xjzt as xjzt from hust_xs_jb t1
   INNER JOIN hust_xx_identity t2 on t1.sfid= t2.sfid
    INNER JOIN hust_xx_profile t3 on t2.uuid=t3.uuid group by t2.uuid ,t3.xm, t3.sfzjh, t1.xjzt order by t3.xm) t
  where xhs>=2 and (xjzt not in('15','17','19','21','30','31','32','33','34','35','36','37','38','39','40','51','52','53','54') or xjzt is null)
就能查出所需要的30条数据了。网上查了一下,说Oracle not in 如果返回的有null值的话,就不会有记录。


相关文档:

oracle 目录结构

Oracle 10g最佳灵活体系结构(Optimal Flexible Architecture,简写为OFA),是指Oracle软件和数据库文件及目录的命名约定和存储位置规则,可以将它想像为一组好的习惯,它使用户可以很容易地找到与Oracle数据库相关的文件集合。
 
使用最佳灵活体系结构,能够简化数据库系统的管理工作,使数据库管理员更加容易地定 ......

ORACLE 11GR2 RAC new features 新特性。

2009年9月Oracle公司发布了期待已久的Oracle 11g R2,本系列文章将给读者一一揭开新版本中的新特性,并会介绍企业如何利用这些新特性将现有的Oracle 9i,10g,11g R1升级到Oracle 11g R2.
  经历了难以忍受的长时间等待,Oracle公司突然在9月1发布了Oracle 11g R2,我不得不承认Oracle的保密工作做得多么好,我相信Oracl ......

ORACLE SQL常用优化方法

1       查询sql优化
1.1    选择最有效率的表名顺序(只在基于规则的优化器中有效ORACLE)
解析器按照从右到左的顺序处理from子句中的表名,因此from子句中写在最后的表(基础表driving table)将被最先处理。在from子句中包含多个表的情况下,你必须选择记录条数最少的表 ......

Oracle的外部表

外部表作用:加载和卸载数据
外部表都是只读表,不能进行update,insert,delete操作.
Oracle 提供两种访问驱动: ORACLE_LOADER, ORACLE_DATAPUMP(oracle 10.2后新增的驱动)
ORACLE_LOADER:    它利用oracle loader技术从外部表读取数据. 它还具有类似SQL*Loader工具控制文件语法的数据映射能力.
ORACLE_DAT ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号