Re: Select .... where id not in (....) returns 0 incorrectly

From: "J(dot) Roeleveld" <joost(at)antarean(dot)org>
To: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: Select .... where id not in (....) returns 0 incorrectly
Date: 2022-04-04 13:21:07
Message-ID: 2245474.ElGaqSPkdT@iris
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Monday, April 4, 2022 2:50:44 PM CEST Jeremy Smith wrote:
> > Doesn't this usually happen if q.id contains NULL. That is as per ANSI
> > standard.
>
> Yes, there's a good description of this here:
> https://wiki.postgresql.org/wiki/Don't_Do_This#Don.27t_use_NOT_IN
>
> It would be better to use NOT EXISTS:
> select count(*) from snapshotlist where NOT EXISTS (SELECT FROM q WHERE q.id
> = snapshotlist.id);
>
>
> -Jeremy

Thank you Jeremy and Ravi.

This was actually the case, I forgot there is 1 NULL-value in that list.
Personally, I think NULL should be treated as a seperate value and not lead to
strange behaviour.

I will need to look into my queries and get rid of "NOT IN" constructions when
the list comes from a different query.

--
Joost

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message J. Roeleveld 2022-04-04 13:26:40 Re: Transaction and SQL errors
Previous Message Jeremy Smith 2022-04-04 12:50:44 Re: Select .... where id not in (....) returns 0 incorrectly