如何在PostgreSQL中通过COLUMN组合/合并两个选择查询?

时间:2018-02-06 13:00:35

标签: sql postgresql

我想通过COLUMN组合/合并两个选择查询,而不是使用UNION显示here的行。

我们说我有

SELECT attr1, attr2 FROM table1

SELECT attr1, attr2 FROM table2

请注意,两个表都具有相同的属性名称。

我想要一个包含以下列的结果:

attr1_table1, attr2_table1, attr1_table2, attr2_table2

编辑(仅适用于下一个,因为外部联接正常):

我的第一个选择返回类似于:

id  attr1  attr2
1   3      5
2   4      6

和我的第二次选择

id  attr1 attr2
1   7     9
2   8     10

我想要的结果是:

id  attr1 attr2 attr1 attr2
1   3     5     7     9
2   4     6     8     10

由于

2 个答案:

答案 0 :(得分:1)

交叉连接会非常危险,因为它会产生大量数据。例如。如果Table1和Table2各有1000行,则交叉连接的结果将是1,000,000行!

但是,我假设您想要排列匹配的行。请使用以下内容:

select  COALESCE(t1.id, t2.id) as id,
        t1.attr1, t1.attr2, t2.attr1, t2.attr2
from    Table1 t1
        full outer join Table2 t2 on
            t2.id = t1.id

full outer join表示这也会返回未找到匹配项的行。

答案 1 :(得分:0)

你的问题很模糊。但一个可能的答案是cross join

select t1.attr1 as attr1_1, t1.attr2 as attr2_1,
       t2.attr1 as attr1_2, t2.attr2 as attr2_2
from table1 t1 cross join
     table2 t2;