The following bug has been logged online: Bug reference: 2961 Logged by: Aaron Logue Email address: [EMAIL PROTECTED] PostgreSQL version: 8.2.1 Operating system: Linux (various flavors) Description: NULL values in subselects force NOT IN to false Details:
SELECT X FROM (SELECT 42 AS X) AS FOO WHERE X NOT IN (7,NULL); returns 0 rows. Shouldn't "X NOT IN (7,NULL)" be true if X is neither 7 nor NULL? Removing the NULL causes the row to be returned. Here's a form of the problem using normal tables: CREATE TABLE test1 ( test_id numeric(28,0) ); CREATE TABLE test2 ( test_id numeric(28,0) ); INSERT INTO test1 (test_id) VALUES (1); INSERT INTO test2 (test_id) VALUES (2); INSERT INTO test2 (test_id) VALUES (NULL); SELECT test_id FROM test1 WHERE test_id NOT IN (SELECT test_id FROM test2); will return 0 rows. Deleting the null field from test2 or updating test2.test_id to a non-null value will cause it to behave as expected. ---------------------------(end of broadcast)--------------------------- TIP 7: You can help support the PostgreSQL project by donating at http://www.postgresql.org/about/donate