From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Martijn van Oosterhout <kleptog(at)svana(dot)org> |
Cc: | Jeff Ross <jross(at)wykids(dot)org>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: Column alias in where clause? |
Date: | 2008-08-14 01:21:55 |
Message-ID: | 20619.1218676915@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Martijn van Oosterhout <kleptog(at)svana(dot)org> writes:
> You can't. Conceptually, the result of the SELECT is not visible until
> *after* the WHERE clause has executed, so having the where clause
> depend on the select won't work.
It's not only conceptual. Consider
SELECT 1/x FROM mytab WHERE x <> 0;
You'd be unhappy if this query failed with a divide-by-zero error
(and it would be a violation of the SQL spec, too). So per spec,
the SELECT list must not be evaluated until after WHERE completes,
and that's why it's not reasonable for WHERE to refer to the
SELECT list.
(Now, we've kinda broken this rule by allowing GROUP BY to refer
to SELECT items, but that's a matter for another discussion.)
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2008-08-14 01:27:37 | Re: In-place conversion of type bool |
Previous Message | Tom Lane | 2008-08-14 01:17:55 | Re: automatic REINDEX-ing |