On Monday, September 21, 2015, Amir Rohan <amir.ro...@mail.com> wrote:
> On Monday, September 21, 2015, Amir Rohan <amir.ro...@mail.com > <javascript:;>> wrote: > > > >> From > http://www.postgresql.org/docs/9.4/static/sql-select.html[http://www.postgresql.org/docs/9.4/static/sql->> > select.html] (and previous version too): > >> > >> ##SELECT List > >> > >> <...> > >> Instead of an expression, * can be written in the output list as a > shorthand for all the columns of the > >> selected rows. > >> Also, you can write table_name.* as a shorthand for the columns > coming from just that table. In these > >> cases it is not possible to specify new names with AS; the output > column names will be the same as the > >> table columns' names. > >> > >> But, the docs elsewhere feature a query example show the use of a > wildcard for columns > >> as well as allowing you to assign names to as many of the leading > columns as you wish: > >> > >> > >> WITH T0 as ( SELECT 1,2,3 ) > >> SELECT T0.* from T0 as T0(foo,bar) ;<...> > > On Monday, September 21, 2015, David G. Johnston wrote: > > > Neither of those examples is: > > > > SELECT * AS "how would one alias this?" FROM table > > > > So what's your point? > > My point is that "In these cases it is not possible to specify new names > with AS" is misleading because > it *is* possible and useful, but requires syntax which isn't clearly shown > (if at all) where I'd expect it. > I think that could be improved. > > > Obviously you can alias stuff before it makes its way into a select-list > that refers to it using * > > "obvious" to whom? probably not to someone who's level of SQL mastery has > brought him/her to reading > the exciting "SELECT" documentation. I do see your point though, in the > grammar the "AS" in my example > belongs not to `output_name ` but to `from_item`. So this syntax is hidden > away behind the `column_alias` > production. > > > In this case the FROM clause is what is being aliased. It is documented > though I'd need to look to > > identify the specific location. > > This belongs in the page describing SELECT, and though I've looked I > haven't found it. If I'm wrong ( > I did look again just now), please correct me. > > To be honest, if you have a situation where you think you need to alias "*" you should probably be expanding that "*" out into individual column names anyway, which you can easily alias. The docs don't make a big deal of alising other than noting individually where they can happen (cte, from clause, select-list) and few questions that are raised are probably better served to be simply handled on these lists than cluttering the docs. David J.