Re: (FAQ?) JOIN condition - 'WHERE NULL = NULL' - Mailing list pgsql-general

From Ian Sillitoe
Subject Re: (FAQ?) JOIN condition - 'WHERE NULL = NULL'
Date
Msg-id c6ff42340804021032n31675e13g485cd6a6a6e361d5@mail.gmail.com
Whole thread Raw
In response to Re: (FAQ?) JOIN condition - 'WHERE NULL = NULL'  (Craig Ringer <craig@postnewspapers.com.au>)
List pgsql-general
Ah - thanks and apologies for not finding those previous discussions. Does anyone else feel this might be useful as a point on the NULL section of the FAQ (it certainly would have saved me an afternoon)?

Cheers,

Ian

On Wed, Apr 2, 2008 at 6:24 PM, Craig Ringer <craig@postnewspapers.com.au> wrote:
Ian Sillitoe wrote:
This is probably a stupid question that has a very quick answer, however it
would be great if someone could put me out of my misery...

I'm trying to JOIN two tables (well a table and a resultset from a PL/pgsql
function) where a joining column can be NULL
 
Sounds like you might want something like:

SELECT * FROM tablea INNER JOIN tableb ON (NOT tablea.id IS DISTINCT FROM tableb.tablea_id_fk);

which can also be written as:

SELECT * FROM tablea, tableb WHERE NOT tablea.id IS DISTINCT FROM tableb.tableid_id_fk ;

There's been lots of recent discussion of IS DISTINCT FROM, which is why it comes straight to mind.

If that's not what you meant (by NULL = NULL) then might you be looking for an OUTER JOIN ?

--
Craig Ringer

pgsql-general by date:

Previous
From: Ted Byers
Date:
Subject: Re: (FAQ?) JOIN condition - 'WHERE NULL = NULL'
Next
From: "Rodrigo E. De León Plicet"
Date:
Subject: Re: Problem with planner choosing nested loop