Subqueries - Mailing list pgsql-novice

From Narsimham Chelluri
Subject Subqueries
Date
Msg-id CAGzvs8dyQh3XDbJiPGzowckmN9o7sA3ysnOC5wE=-mSAKkyL5g@mail.gmail.com
Whole thread Raw
Responses Re: Subqueries
Re: Subqueries
List pgsql-novice
Hello,

Can someone please explain to me why my first query does not return an error?

--
subquerytest=# create table something (id bigint generated always as identity primary key);
CREATE TABLE
subquerytest=# create table somethingelse (asdf text);
CREATE TABLE
subquerytest=# select * from something where id in (select id from somethingelse); id 
----
(0 rows)

subquerytest=# select id from somethingelse;
ERROR:  column "id" does not exist
LINE 1: select id from somethingelse;               ^
subquerytest=# select * from something where id in (select id); id 
----
(0 rows)

subquerytest=# select * from something where id in (select asdf);
ERROR:  column "asdf" does not exist
LINE 1: select * from something where id in (select asdf);                                                    ^
subquerytest=# 
--

I would imagine it has something to do with: "from something" means that "id" is available in the subquery and refers to the column in "something" and of course does not refer to "somethingelse" because that doesn't have such a column on it. And that I would have to disambiguate if it did by using aliases or table names preceding a dot.

If that is correct: I almost made a mistake in a subquery where I used the wrong column in the subquery. Is it possible to make the subquery refer only to values within its own specific from clause and error out otherwise? Maybe I could do that with a CTE?

Thanks.

- Narsa

pgsql-novice by date:

Previous
From: "Hall, Michael H. (GSFC-423.0)[RAYTHEON COMPANY]"
Date:
Subject: Configuration example for a repmgr "witness host"
Next
From: Bzzzz
Date:
Subject: Re: Subqueries