| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | selva kumar <selva(dot)logic(at)hotmail(dot)com> |
| Cc: | "pgsql-bugs(at)lists(dot)postgresql(dot)org" <pgsql-bugs(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: Query will execute when inner query have issue |
| Date: | 2020-01-23 14:43:33 |
| Message-ID: | 5259.1579790613@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
selva kumar <selva(dot)logic(at)hotmail(dot)com> writes:
> We tried query in a following manner.
> SELECT * FROM A where A.id IN (SELECT B.id from B);
> In the above query Table B does not have id. But this query return all A table records
You sure that's *actually* what you wrote? The usual mistake is to
fail to qualify the inner query's column reference at all:
SELECT * FROM A where A.id IN (SELECT id from B);
If B has no "id" column, it's still a legal SQL query, interpreted as
SELECT * FROM A where A.id IN (SELECT A.id from B);
so as long as B has any rows, the IN-test succeeds for every non-null
value of A.id. People get burned by that all the time, but it's
acting as required by the SQL standard.
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Alvaro Herrera | 2020-01-23 15:48:03 | Re: 12.1 Partitioned Table Creation Bug |
| Previous Message | Peter Eisentraut | 2020-01-23 13:46:08 | Re: BUG #16059: Tab-completion of filenames in COPY commands removes required quotes |