=?iso-8859-1?Q?SZUCS_G=E1bor?= <surrano@mailbox.hu> writes:
>> It's NULLs inside the subselect that are the issue.
>
> select 1 in (select a from foo)
> select exists ( select 1 from foo where a=1)
> Just a dumb try :)
> SELECT (exists(select 1 from foo where a isnull) AND NULL)
> OR exists(select 1 from foo where a=1)
The more general case is where you have a variable (or expression)
on the left of IN. That could be NULL too, and this still doesn't
give the right result in that case :-(. With NULL on the left the
correct answer would be FALSE if the subselect has zero rows,
NULL otherwise.
regards, tom lane