On 12/04/13 10:17, Craig James wrote: > Hmmm.... the subselect is invalid, but not rejected. The outer select > returns every row in the customer_order_matches table. This seems > pretty wrong. This is PG 9.2.1 running on Ubuntu. > > > db=> select count(1) from customer_order_matches where > customer_order_item_id in (select customer_order_item_id from > customer_order where customer_order_id = 105862140); > count > ------- > 36180 > (1 row) > > db=> select customer_order_item_id from customer_order where > customer_order_id = 105862140; > ERROR: column "customer_order_item_id" does not exist > LINE 1: select customer_order_item_id from customer_order where cust... > ^ > > Craig The "customer_order_item_id" in the subselect is referencing the column and therefore the value of the outer query "customer_order_item_id" in the query result. i.e: SELECT generate_series FROM generate_series(1,100) WHERE generate_series IN (SELECT generate_series); Which is always going to be true. (x == x). You might want to explicitly reference tables (and alias). Such as: SELECT count(*) FROM customer_order_matches com WHERE com.customer_order_item_id IN (SELECT co.customer_order_item_id FROM customer_order co WHERE co.customer_order_id = 105862140); Although I'm making asumptions with the "customer_order_id". Jules. -- Sent via pgsql-admin mailing list (pgsql-admin@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-admin