Re: Subquery uses ungrouped column

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: Subquery uses ungrouped column
Дата
Msg-id CAKFQuwZAZ4C8F1=2tsLJ4ut=t8KyFGFaV5yh5ZcQzr8xHjGZpA@mail.gmail.com
обсуждение исходный текст
Ответ на Subquery uses ungrouped column  (Alex Ignatov <a.ignatov@postgrespro.ru>)
Ответы Re: Subquery uses ungrouped column  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
On Thu, May 26, 2016 at 12:02 PM, Alex Ignatov <a.ignatov@postgrespro.ru> wrote:

Hello!

Why the following query:

SELECT (select msc_id
              from collectors
              where id = substring(fileid from -1)
       ) msc_id
       from ip_data_records
       group by substring(fileid from -1)

gives me:

ERROR:  subquery uses ungrouped column "ip_data_records.fileid" from outer query
LINE 3:         where id = substring(fileid from -1)

but  the following query:

SELECT (select msc_id
              from collectors
              where id = fileid
       ) msc_id
       from ip_data_records
       group by fileid is working ok


From observation ​PostgreSQL​
 
​doesn't recognize the equivalency of the outer "group by substring(fileid from -1)" and the subquery expression.  What PostgreSQL does is push the column ip_data_records.fieldid​ into the subquery where it just happens to be used in the expression "substring(fileid from -1)".  For all PostgreSQL cares the subquery could have the expression "where id = lower(fileid)" and the execution mechanics, and error, would be identical.

IOW, columns are the unit of interchange between a parent query and its correlated subqueries.​

David J.

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

Предыдущее
От: Alex Ignatov
Дата:
Сообщение: Subquery uses ungrouped column
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Subquery uses ungrouped column