2

我有两个表,它们具有相同的 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;
4

3 回答 3

6

如果您想要两个“id”,则为列命名

SELECT table1.id AS id1, table2.id AS id2
FROM table1...
于 2012-04-22T08:19:00.020 回答
2

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

select table1.*, table2.*, table1.id as 'table1.id', table2.id as 'table2.id'
from ...
于 2016-06-21T17:02:03.773 回答
0

您不能使用 选择它select *。尝试这个 :

select table1.id, table1.description, table2.id, table2.tid
from table1
inner join table2
 on table1.id = table2.tid
于 2012-04-22T03:53:41.703 回答