ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle10.2.0.1上not in的一个小问题

oracle10.2.0.1上not in的一个小问题

原创 Linux操作系统 作者:sieper 时间:2010-02-26 10:37:03 0 删除 编辑

create table AL
(
  NODE_ID     VARCHAR2(128) not null,
  PROPERTY_ID VARCHAR2(128) not null,
  VALUE       NUMBER not null,
  VINDEX      NUMBER not null
)
;

prompt Creating AN...
create table AN
(
  PKID          VARCHAR2(128) not null,
  DEFINITION_ID VARCHAR2(128),
  PARENT_ID     VARCHAR2(128) not null,
  NAME          VARCHAR2(128),
  ORDERNO       NUMBER,
  STRING_INDEX  VARCHAR2(1),
  CLOB_INDEX    VARCHAR2(1)
)
;

 

insert into AN (PKID, DEFINITION_ID, PARENT_ID, NAME, ORDERNO, STRING_INDEX, CLOB_INDEX)
values ('2534175354408', null, '1000000000000', 'aaa_1_2_3_4_5.png', 42507, null, null);

出现问题的SQL1

select  * from an where pkid not in
(select node_id from al where property_id='length' and value is  null)

没有问题的SQL2


select  * from an where pkid not in
(select node_id from al)

很奇怪吧 :仔细看如果把al.value not null的约束去掉。那么SQL1和SQL2均正常。或者不去掉

SQL3

select * from an, al
where al.node_id(+) = an.pkid
  and al.value(+) is null
  and al.property_id(+) = 'length'
  and al.node_id is null;


  SQL4
 
 
select * from an left join al on an.pkid=al.node_id  and  al.property_id='length' and al.value is null
  (以上2个SQL采用自网友的建议)这2个也可以出正确结果。

而且SQL1和SQL2在oracle 9i版本是没有问题的啊!所以问题就在于10.2.0.1对这块做了什么修改,不是很清楚。如果在后面的工作中找到答案再做记录。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11813230/viewspace-627901/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-03-17

  • 博文量
    87
  • 访问量
    210539