RE: Query will execute when inner query have issue

Поиск
Список
Период
Сортировка
От selva kumar
Тема RE: Query will execute when inner query have issue
Дата
Msg-id MAXPR01MB2157CA93DACAD45CEBE77973E20F0@MAXPR01MB2157.INDPRD01.PROD.OUTLOOK.COM
обсуждение исходный текст
Ответ на Re: Query will execute when inner query have issue  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: Query will execute when inner query have issue  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список pgsql-bugs

Greetings

 

I did the following excise.

 

CREATE TABLE product(

productid int PRIMARY KEY,

productname CHARACTER VARYING NOT NULL);

 

INSERT INTO product values (1,'Pen');

INSERT INTO product values (2,'Pencil');

 

 

CREATE TABLE sales(

salesdate date,

product int,

qyt int);

 

INSERT INTO sales VALUES  ('2020-01-22',1,10);

INSERT INTO sales VALUES ('2020-01-22',2,20);

 

 

select productid from sales where salesdate='2020-01-22';

ERROR:  column "productid" does not exist

LINE 1: select productid from sales where salesdate='2020-01-22'

 

 

But the following query will executed

select * from product where productid in (select productid from sales where salesdate='2020-01-22')

 

 

Sent from Mail for Windows 10

 


From: Tom Lane <tgl@sss.pgh.pa.us>
Sent: Thursday, January 23, 2020 8:13:33 PM
To: selva kumar <selva.logic@hotmail.com>
Cc: pgsql-bugs@lists.postgresql.org <pgsql-bugs@lists.postgresql.org>
Subject: Re: Query will execute when inner query have issue
 
selva kumar <selva.logic@hotmail.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

В списке pgsql-bugs по дате отправления:

Предыдущее
От: selva kumar
Дата:
Сообщение: RE: Query will execute when inner query have issue
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: Query will execute when inner query have issue