On Tue, Dec 27, 2005 at 02:44:51PM -0500, Tom Lane wrote: > "George Pavlov" <[EMAIL PROTECTED]> writes: > > select count(*) from t2 where t2.name not in ( > > select t1.name from t1 limit 261683) > > --> 13 > > select count(*) from t2 where t2.name not in ( > > select t1.name from t1 limit 261684) > > --> 0 > > > What is so magical about 261683? > > Most likely, the 261684'th row of t1 has a NULL value of name. > Many people find the behavior of NOT IN with nulls unintuitive, > but it's per SQL spec ... > > regards, tom lane
In 8.0 we get: elein=# select 1 in (NULL, 1, 2); ?column? ---------- t (1 row) elein=# select 3 not in (NULL, 1, 2); ?column? ---------- (1 row) For consistency, either both should return NULL or both return true/false. For completeness testing, the following are correct. Select NULL in/not in any list returns NULL. elein=# select NULL in (1,2); ?column? ---------- (1 row) elein=# select NULL not in (1,2); ?column? ---------- (1 row) elein=# select NULL in (NULL, 1,2); ?column? ---------- (1 row) elein=# select NULL not in (NULL, 1,2); ?column? ---------- (1 row) elein -------------------------------------------------------------- [EMAIL PROTECTED] Varlena, LLC www.varlena.com (510)655-2584(o) (510)543-6079(c) PostgreSQL Consulting, Support & Training PostgreSQL General Bits http://www.varlena.com/GeneralBits/ -------------------------------------------------------------- AIM: varlenallc Yahoo: AElein Skype: varlenallc -------------------------------------------------------------- I have always depended on the [QA] of strangers. ---------------------------(end of broadcast)--------------------------- TIP 4: Have you searched our list archives? http://archives.postgresql.org