Re: [SQL] Not getting the expected results for a simple where not in - Mailing list pgsql-sql

From Adrian Klaver
Subject Re: [SQL] Not getting the expected results for a simple where not in
Date
Msg-id d2a16055-efdd-d502-d1df-1fd36804e066@aklaver.com
Whole thread Raw
In response to [SQL] Not getting the expected results for a simple where not in  (Jonathan Moules <jonathan-lists@lightpear.com>)
List pgsql-sql
On 06/07/2017 05:20 AM, Jonathan Moules wrote:
> Hi List,
> I'm a little confused by what seems like it should be a simple query and 
> was hoping someone could explain what's going on.
> Using PG 9.4.x

> 
> It seems to relate to the nulls. If I change the above and add "and str 
> is not null" into the subquery:
> 
> select
>      *
> from
>      aaa.testing_nulls
> where
>      str not in
>      (
>          select
>              str
>          from
>              aaa.testing_nulls
>              where
>                  status in ('aa')
>                  and str is not null
>      )
> 
> It now gives the expected results.

Or you could do:

select    *
from    testing_nulls
where    str not in    (        select            coalesce(str, '')        from            testing_nulls
where               status in ('aa')    )
 
;
  str   | status
--------+-------- third  | NULL fourth | bb
(2 rows)

> Why is this?
> (I tested this in SQLite too, and get the same behaviour, so I guess 
> it's a generic SQL thing I've never encountered before.)
> Thanks,
> Jonathan


-- 
Adrian Klaver
adrian.klaver@aklaver.com



pgsql-sql by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: [SQL] Not getting the expected results for a simple where not in
Next
From: Majid Khan
Date:
Subject: [SQL] crosstab category mix