postgresql调用具有相同名称的列

时间:2012-04-22 03:48:37

标签: postgresql

我有两个表,它们具有相同的ID名称(我无法更改表格的设计方式)而我正在尝试查询table2的ID,如何在加入时执行此操作?

create table table1(
    id          integer, -- PG: serial
    description MediumString not null,
    primary key (id)
);


create table table2 (
    id          integer, -- PG: serial
    tid         references table1(id),
    primary key (id)
);

所以基本上当他们加入时,如果我进行以下查询,两列将具有相同的名称“id”

select * from table1
join table2 on table1.id = table2.tid;

3 个答案:

答案 0 :(得分:4)

如果您想同时使用“id”s

,请对列进行别名
SELECT table1.id AS id1, table2.id AS id2
FROM table1...

答案 1 :(得分:0)

您无法使用select *选择它。 试试这个:

select table1.id, table1.description, table2.id, table2.tid
from table1
inner join table2
 on table1.id = table2.tid

答案 2 :(得分:0)

如果你想查询两个表上的所有*但仍然能够引用特定的id你也可以这样做,你最终会得到你可能不会使用的重复id列,但在某些情况下如果你真的需要所有的数据,这是值得的。

select table1.*, table2.*, table1.id as 'table1.id', table2.id as 'table2.id'
from ...