什么时候SQL连接的结果会将两列折叠成一列?

时间:2014-03-24 15:11:41

标签: sql postgresql join

我经常使用PostgreSQL,并且我观察到一些相等的连接将相等比较中涉及的两列合并到结果集中的单个列中,而有些则不合适。它似乎与连接是INNER还是OUTER有关,也与连接条件是否使用USING语法或ON语法表达有关。我想知道两列何时被折叠/合并为一个甚至更好:我想知道这个行为的指定位置。

1 个答案:

答案 0 :(得分:2)

使用using时会崩溃

create table a (id int);
create table b (id int);

select *
from
    a
    inner join
    b using (id);
 id 
----
(0 rows)

如果使用on,则会返回两列:

select *
from
    a
    inner join
    b on a.id = b.id;
 id | id 
----+----
(0 rows)

没有表名限定的列是不明确的

select id
from
    a
    inner join
    b on a.id = b.id;
ERROR:  column reference "id" is ambiguous
LINE 1: select id from a inner join b on a.id = b.id;

outer join

的情况相同
select *
from
    a
    full outer join
    b on a.id = b.id;
 id | id 
----+----
(0 rows)