Re: Targetlist lost when CTE join <targetlist lost when CTE join>

Поиск
Список
Период
Сортировка
Искать
От
Julien Rouhaud
Тема
Re: Targetlist lost when CTE join <targetlist lost when CTE join>
Дата
Msg-id
20230628092610.fc7bw3ju6pbidt2k@jrouhaud
Ответ на
Список
Дерево обсуждения
Re: Targetlist lost when CTE join <targetlist lost when CTE join> Julien Rouhaud <rjuju123@gmail.com>
Re: Targetlist lost when CTE join <targetlist lost when CTE join> Julien Rouhaud <rjuju123@gmail.com>
Re: Targetlist lost when CTE join <targetlist lost when CTE join> Zhang Mingli <zmlpostgres@gmail.com>
Re: Targetlist lost when CTE join <targetlist lost when CTE join> Zhang Mingli <zmlpostgres@gmail.com>
On Wed, Jun 28, 2023 at 05:17:14PM +0800, Julien Rouhaud wrote:
> >
> > Table t1 and  t2 both has 2 columns: c1, c2, when CTE join select *, the result target list seems to lost one’s column c1.
> > But it looks good when select cte1.* and t1.* explicitly .
> >
> > Is it a bug?
>
> This is working as intended.  When using a USING clause you "merge" both
> columns so the final target list only contain one version of the merged
> columns, which doesn't happen if you use e.g. ON instead.  I'm assuming that
> what the SQL standard says, but I don't have a copy to confirm.

I forgot to mention that this is actually documented:

https://www.postgresql.org/docs/current/queries-table-expressions.html

Furthermore, the output of JOIN USING suppresses redundant columns: there is no
need to print both of the matched columns, since they must have equal values.
While JOIN ON produces all columns from T1 followed by all columns from T2,
JOIN USING produces one output column for each of the listed column pairs (in
the listed order), followed by any remaining columns from T1, followed by any
remaining columns from T2.


В списке pgsql-hackers по дате отправления
От: Zhang Mingli
Дата:
От: Zhang Mingli
Дата:
FAQ