2012-04-22 57 views
0

我有兩個表,他們有相同的ID名稱(我不能改變表的設計方式),我試圖查詢table2的ID,我怎麼會這樣做,當他們是加入?同名Postgresql調用列

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; 

回答

0

它使用select *你不能選擇。 試試這個:如果你希望兩個「身份證」

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

別名列小號

SELECT table1.id AS id1, table2.id AS id2 
FROM table1... 
+1

對於其他任何事情,SELECT *通常都是個壞主意;如果您使用它,基於模式更改,事情可能會以不可預知和令人驚訝的方式突破。 – kgrittn 2012-04-22 15:55:44

0

如果你想查詢所有*這兩個表,但仍然能夠引用特定ID可以這樣做,你會得到重複的ID列,你可能不會使用,但在某些情況下,如果你真的需要所有的數據,這是值得的。

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