diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2021-03-31 17:09:24 +0200 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2021-03-31 17:10:50 +0200 |
commit | 055fee7eb4dcc78e58672aef146334275e1cc40d (patch) | |
tree | 2034e69c471453e9aea59712b09d3fed95bce330 /doc/src | |
parent | 27e1f14563cf982f1f4d71e21ef247866662a052 (diff) |
Allow an alias to be attached to a JOIN ... USING
This allows something like
SELECT ... FROM t1 JOIN t2 USING (a, b, c) AS x
where x has the columns a, b, c and unlike a regular alias it does not
hide the range variables of the tables being joined t1 and t2.
Per SQL:2016 feature F404 "Range variable for common column names".
Reviewed-by: Vik Fearing <vik.fearing@2ndquadrant.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/flat/454638cf-d563-ab76-a585-2564428062af@2ndquadrant.com
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/ref/select.sgml | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/doc/src/sgml/ref/select.sgml b/doc/src/sgml/ref/select.sgml index 9c5cf50ef0c..fa676b1698d 100644 --- a/doc/src/sgml/ref/select.sgml +++ b/doc/src/sgml/ref/select.sgml @@ -59,7 +59,7 @@ SELECT [ ALL | DISTINCT [ ON ( <replaceable class="parameter">expression</replac [ LATERAL ] <replaceable class="parameter">function_name</replaceable> ( [ <replaceable class="parameter">argument</replaceable> [, ...] ] ) AS ( <replaceable class="parameter">column_definition</replaceable> [, ...] ) [ LATERAL ] ROWS FROM( <replaceable class="parameter">function_name</replaceable> ( [ <replaceable class="parameter">argument</replaceable> [, ...] ] ) [ AS ( <replaceable class="parameter">column_definition</replaceable> [, ...] ) ] [, ...] ) [ WITH ORDINALITY ] [ [ AS ] <replaceable class="parameter">alias</replaceable> [ ( <replaceable class="parameter">column_alias</replaceable> [, ...] ) ] ] - <replaceable class="parameter">from_item</replaceable> [ NATURAL ] <replaceable class="parameter">join_type</replaceable> <replaceable class="parameter">from_item</replaceable> [ ON <replaceable class="parameter">join_condition</replaceable> | USING ( <replaceable class="parameter">join_column</replaceable> [, ...] ) ] + <replaceable class="parameter">from_item</replaceable> [ NATURAL ] <replaceable class="parameter">join_type</replaceable> <replaceable class="parameter">from_item</replaceable> [ ON <replaceable class="parameter">join_condition</replaceable> | USING ( <replaceable class="parameter">join_column</replaceable> [, ...] ) [ AS <replaceable class="parameter">join_using_alias</replaceable> ] ] <phrase>and <replaceable class="parameter">grouping_element</replaceable> can be one of:</phrase> @@ -676,7 +676,7 @@ TABLE [ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ] </varlistentry> <varlistentry> - <term><literal>USING ( <replaceable class="parameter">join_column</replaceable> [, ...] )</literal></term> + <term><literal>USING ( <replaceable class="parameter">join_column</replaceable> [, ...] ) [ AS <replaceable class="parameter">join_using_alias</replaceable> ]</literal></term> <listitem> <para> A clause of the form <literal>USING ( a, b, ... )</literal> is @@ -686,6 +686,18 @@ TABLE [ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ] equivalent columns will be included in the join output, not both. </para> + + <para> + If a <replaceable class="parameter">join_using_alias</replaceable> + name is specified, it provides a table alias for the join columns. + Only the join columns listed in the <literal>USING</literal> clause + are addressable by this name. Unlike a regular <replaceable + class="parameter">alias</replaceable>, this does not hide the names of + the joined tables from the rest of the query. Also unlike a regular + <replaceable class="parameter">alias</replaceable>, you cannot write a + column alias list — the output names of the join columns are the + same as they appear in the <literal>USING</literal> list. + </para> </listitem> </varlistentry> |