Re: [HACKERS] Subselects and NOTs

Vadim Mikheev <vadim@sable.krasnoyarsk.su>

From: "Vadim B. Mikheev" <vadim@sable.krasnoyarsk.su>
To: Mattias Kregert <matti@algonet.se>
Cc: ocie@paracel.com, pgsql-hackers@hub.org
Date: 1998-02-24T01:30:27Z
Lists: pgsql-hackers
Mattias Kregert wrote:
> 
> ocie@paracel.com wrote:
> >
> > On another note, I have been following this "not a in b" vs "not a in
> > b" discussion and it seems to me that the two statements are logically
> > equivalent.  Testing for a's membership in the set b and then negating
> > should be equivalent to testing for a's membership in the compliment
> > of set b.  In these tests, nulls seem to be treated just like any
> > other value.
> >
> > Ocie
> 
> According to the SQL standard: Where 'NOT' and 'IN' are written next to
> each other, this is an alias for "<>ALL", and 'IN' is an alias for
> "=ANY". Therefore:
> 
> "a NOT IN b" evaluates as: (a) <>ALL (b)
> "NOT a IN b" evaluates as: NOT ( (a) =ANY (b) )
> 
> ...which give these results:
> 
>  NOT 1 IN 2     true
>  1 NOT IN 2     true
> 
>  NOT 1 IN NULL  true [NOT (1 =ANY NULL)]
>  1 NOT IN NULL  false [1 <>ALL NULL]

This is exactly how Postgres works now and differ from 3 "big boys".
If there are no objections then I'll leave this as is. We can return
to this issue latter.

Vadim