Re: BUG #14188: "FOR SELECT DISTINCT, ORDER BY expressions must appear IN SELECT list" error and table alias

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #14188: "FOR SELECT DISTINCT, ORDER BY expressions must appear IN SELECT list" error and table alias
Дата
Msg-id 6447.1465916446@sss.pgh.pa.us
обсуждение исходный текст
Ответ на BUG #14188: "FOR SELECT DISTINCT, ORDER BY expressions must appear IN SELECT list" error and table alias  (gabrimonfa@gmail.com)
Ответы Re: BUG #14188: "FOR SELECT DISTINCT, ORDER BY expressions must appear IN SELECT list" error and table alias  (Gabriele Monfardini <gabrimonfa@gmail.com>)
Список pgsql-bugs
gabrimonfa@gmail.com writes:
> CREATE TABLE table1 (id integer primary key, name varchar);
> CREATE TABLE table2 (id integer primary key, home varchar);

> SELECT DISTINCT name FROM table1 t1 INNER JOIN table2 t2 ON (t1.id = t2.id)
> ORDER BY t1.name;
> ERROR:  for SELECT DISTINCT, ORDER BY expressions must appear in select list
> SELECT DISTINCT name FROM table1 t1 INNER JOIN table2 t2 ON (t1.id = t2.id)
> ORDER BY name;
> [ok]

The reason for the discrepancy is that "t1.name" refers to an output
column of t1, while "name" refers to an output column of the unnamed JOIN.
While those are semantically equivalent in this particular case, they are
not so in general --- in particular, had this been a FULL JOIN, they
would definitely not be equivalent.  PG's parser treats them as different
variables and therefore sees "ORDER BY t1.name" as unrelated to the value
being distinct'ed on.

We might someday try to make the parser smarter about recognizing such
equivalences earlier, but I'm not terribly excited about it.

            regards, tom lane

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

Предыдущее
От: sideuxb-ky.consultant@dgfip.finances.gouv.fr
Дата:
Сообщение: BUG #14190: 'silent_mode=on', 'pg_ctl restart -w' or 'pg_ctl start -w' reports error
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: BUG #14187: Function is running correct but not showing output