Subselect with incorrect column not a syntax error?
Could someone please explain to me why the following select does not
result in a syntax error? (9.0.3)
begin;
create table x( c1 integer , c2 integer);
create table y( c3 integer, c4 integer);
select * from x where c2 in ( select c2 from y where c4 = 2 );
rollback;
Mike
On 4/13/2012 11:39 AM, Mike Blackwell wrote:
Could someone please explain to me why the following select does not
result in a syntax error? (9.0.3)begin;
create table x( c1 integer , c2 integer);
create table y( c3 integer, c4 integer);select * from x where c2 in ( select c2 from y where c4 = 2 );
rollback;
Mike
Your subquery is correlated with the outer query. So the c2 in the
subquery is referring to table x.
--
Jack Christensen
jackc@hylesanderson.edu
On Fri, Apr 13, 2012 at 11:59 AM, Jack Christensen
<jackc@hylesanderson.edu> wrote:
On 4/13/2012 11:39 AM, Mike Blackwell wrote:
Could someone please explain to me why the following select does not
result in a syntax error? (9.0.3)begin;
create table x( c1 integer , c2 integer);
create table y( c3 integer, c4 integer);select * from x where c2 in ( select c2 from y where c4 = 2 );
rollback;
Mike
Your subquery is correlated with the outer query. So the c2 in the subquery
is referring to table x.
This is a good example of why one should always use a table alias
prefix when using subqueries.
Indeed.
__________________________________________________________________________________
Mike Blackwell | Technical Analyst, Distribution Services/Rollout
Management | RR Donnelley
1750 Wallace Ave | St Charles, IL 60174-3401
Office: 630.313.7818
Mike.Blackwell@rrd.com
http://www.rrdonnelley.com
Show quoted text
On Fri, Apr 13, 2012 at 13:34, Scott Marlowe <scott.marlowe@gmail.com> wrote:
On Fri, Apr 13, 2012 at 11:59 AM, Jack Christensen
<jackc@hylesanderson.edu> wrote:On 4/13/2012 11:39 AM, Mike Blackwell wrote:
Could someone please explain to me why the following select does not
result in a syntax error? (9.0.3)begin;
create table x( c1 integer , c2 integer);
create table y( c3 integer, c4 integer);select * from x where c2 in ( select c2 from y where c4 = 2 );
rollback;
Mike
Your subquery is correlated with the outer query. So the c2 in the subquery
is referring to table x.This is a good example of why one should always use a table alias
prefix when using subqueries.--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general