Re: LEFT OUTER JOIN question

From: Craig Ringer <craig(at)postnewspapers(dot)com(dot)au>
To: seiliki(at)so-net(dot)net(dot)tw
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: LEFT OUTER JOIN question
Date: 2008-05-04 16:40:24
Message-ID: 481DE6F8.7000006@postnewspapers.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

seiliki wrote:
> Hi!
>
> I expect the SELECT to return two rows. Would some kind
> soul explain for me why it gives only one row?

Without having read the post in detail I'll make a guess: Because NULL =
NULL results in NULL, not true, and the outer (or any other) join
condition only accepts rows where the join condition is true.

This is a FAQ. It probably needs to go in the PostgreSQL FAQ.

The usual response is: Rethink your use of NULL values. Null really
means "unknown" and if you're comparing for equality you probably don't
really want NULLs to be present. If you absolutely must perform
comparisons where NULL should be considered equal to NULL use `IS
DISTINCT FROM` ... but as everybody here says, use of that often
suggests design problems in your queries and schema.

--
Craig Ringer

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Aaron Bono 2008-05-04 16:46:17 Re: LEFT OUTER JOIN question
Previous Message seiliki 2008-05-04 16:28:04 LEFT OUTER JOIN question