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

By simon at 2018-02-07 • 0人收藏 • 52人看过

我想组合/合并两个选择查询由COLUMN而不是按行 显示[这里](https://stackoverflow.com/questions/15849423 /结合,二,选择 - queries-in-postgresql)和UNION。 让我们说我有

SELECT attr1, attr2 FROM table1
SELECT attr1, attr2 FROM table2
请注意,这两个选项卡les具有相同的属性名称。 我想要一个结果与以下列:
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
谢谢

3 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

交叉连接会非常危险,因为它会产生大量的连接 数据。例如。如果Table1和Table2各有1000行,他是一个交叉的结果 加入将是100万行! 不过,我假设你想排列匹配的行。所以使用以下内容:

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表示这也返回没有找到匹配的行。

2018-02-07   #2

你的问题相当含糊。但是一个可能的答案是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;

2018-02-07   #3

交叉连接会非常危险,因为它会产生大量的连接 数据。例如。如果Table1和Table2各有1000行,他是一个交叉的结果 加入将是100万行! 不过,我假设你想排列匹配的行。所以使用以下内容:

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表示这也返回没有找到匹配的行。

登录后方可回帖

Loading...