Muris Pucic wrote: > -- The query below works, even though there is no column "first_name" in > TABLE2. This should return an error but it does not, it returns all rows > from TABLE1. This query should not evaluate correctly even when aliases are > not used because it can be misleading. > > SELECT * FROM TABLE1 WHERE first_name IN (SELECT first_name FROM TABLE2)
Nope, it's working as expected. The first_name in the subquery is referring to the first_name column in the outer query. While it looks strange in a context like that, it's not an error. You wouldn't be able to write correlated subqueries otherwise, e.g: SELECT * FROM TABLE1 WHERE EXISTS (SELECT 1 FROM TABLE2 WHERE first_name = last_name) -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs