Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> Is this a bug, or am I loosing it
I am getting weird results from a NOT IN and NOT EXISTS query. Could this be because of NULL's or is it a bug?
XX is the child table. YY is the parent table. There are some NULL's in XX.PH column whereas there are no NULL's in YY.PHONE_NUMBER.
DEVDB 1{MYACCT}> desc xx
Name Null? Type ---------------------------- -------- ------------------ PH NUMBER(10) DEVDB 1{MYACCT}> desc yy Name Null? Type ---------------------------- -------- ------------------ PHONE_NUMBER NOT NULL NUMBER(10)
DEVDB 1{MYACCT}> select count(*) from yy; JAY SAYS {ENTER} ... COUNT(*)
688431
1 row selected.
Elapsed: 00:00:00.54
DEVDB 1{MYACCT}> select count(*) from xx;
JAY SAYS {ENTER} ...
COUNT(*)
152892
1 row selected.
Elapsed: 00:00:00.36
DEVDB 1{MYACCT}> SELECT phone_number FROM yy WHERE phone_number NOT IN ( SELECT ph FROM xx);
no rows selected
Elapsed: 00:00:28.93
DEVDB 1{MYACCT}>
DEVDB 1{MYACCT}> SELECT COUNT(phone_number) FROM yy WHERE NOT EXISTS (SELECT 1 FROM xx WHERE ph = phone_number);
JAY SAYS {ENTER} ...
COUNT(PHONE_NUMBER)
666936
1 row selected.
Elapsed: 00:00:01.46
DEVDB 1{MYACCT}> SELECT count(phone_number) FROM yy WHERE phone_number NOT IN ( SELECT ph FROM xx);
JAY SAYS {ENTER} ...
COUNT(PHONE_NUMBER)
0
1 row selected.
Elapsed: 00:00:31.83
DEVDB 1{MYACCT}> SELECT count(phone_number) FROM yy WHERE phone_number NOT IN ( SELECT ph FROM xx WHERE ph IS NOT NULL); JAY SAYS {ENTER} ... COUNT(PHONE_NUMBER)
666936
Regards,
J
-- http://www.freelists.org/webpage/oracle-lReceived on Thu Feb 01 2007 - 13:47:16 CST
![]() |
![]() |