public inbox for [email protected]  
help / color / mirror / Atom feed
From: Narsimham Chelluri <[email protected]>
To: [email protected]
Subject: Subqueries
Date: Wed, 5 Mar 2025 15:01:49 -0400
Message-ID: <CAGzvs8dyQh3XDbJiPGzowckmN9o7sA3ysnOC5wE=-mSAKkyL5g@mail.gmail.com> (raw)

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


reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected]
  Subject: Re: Subqueries
  In-Reply-To: <CAGzvs8dyQh3XDbJiPGzowckmN9o7sA3ysnOC5wE=-mSAKkyL5g@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox