On Sun, 8 Apr 2007, Andrus wrote:
> I have tables with large number of columns some of which are duplicate.
> I need to use
>
> SELECT t1.*, t2.* FROM t1 join t2 using (t)
>
> since I don't know all column names of t1 and t2 tables at design time.
>
> In this case PostgreSQL returns table with duplicate columns.
> How to force Postgres to return only first table column when second table
> contains column with same name?
There are a few cases where duplicate columns are trimmed, such as select
* from something with a join ... using or natural join only should result
in one output column for the joined upon column names.
> Code to reproduce:
>
> create table t1 ( id integer
> /*, a lot of other columns */ );
> create table t2 ( id integer
> /*, a lot of other columns */ );
> create table t3 as select t1.*,t2.* from t1 join t2 using (id);
If only id were duplicated, then select * from t1 join t2 using(id)
should work. If other columns are duplicated, then that won't work, but
generally just choosing the first column with a name seems bizarre in that
case.