Possible Duplicate:
Combine two tables that have no common fields
我正在考虑将两个没有共同点(没有列,没有id)的表合并为一个表。
是为了报道。我只需要获取表1中的所有列和表2中的所有列,并将它们放入1表中,这样数据就不会改变,只是它们将不在2表中而是在1中。
例子
表1:KeyboardID, Computermodel, factory
表2:MouseID, Speakers, Circuitboard
这两个组合的新表:KeyboardID, Computermodel, factory, MouseID, Speakers, Circuitboard
更新:我要澄清自己:
这是我的情景视图1:StarID, Planet, Sun然后View2: StarID, Planet, Sun正如您所看到的,它们的列名完全相同;下面是我期望我的第三个视图的样子:
StarID, Planet, Planet2, Sun, Sun2
我不介意第三个视图是这样的:
StarID, StarID2, Planet, Planet2, Sun, Sun2
这里有一个问题,它们根本不相关,你可能在想“在StarID上加入它们”不幸的是,技术上我不能,我需要从View1将StarID附加到View2的StarID上,或者将它们放在完全独立的列中(这是因为数据中没有关系)以使事情复杂化,StarID可能不是唯一的(我不确定是否有视图的唯一性约束(我对postgres还不太熟悉)

最佳答案

您可以使用full outer join
完全外部连接
首先,执行内部联接。那么,对于每一行
在T1中不满足T2中任何行的连接条件时,a
在T2列中用空值添加联接行。另外,对于每个
不满足T1中任何行的连接条件的T2行,
添加T1列中包含空值的联接行。
所以你的问题是:

select
  *          -- or explicitly list column names
from
  <table1>
full outer join
  <table2> on <some join condition>

请注意,联接条件应始终为false。其结果如下:
KeyboardID   Computermodel    factory      MouseID     Speakers     Circuitboard
1            something        something3   (null)      (null)       (null)
2            something2       something4   (null)      (null)       (null)
(null)       (null)           (null)        17         something5   something8
(null)       (null)           (null)        22         something6   something7

注意“other”表中的列始终为空,行数为(表1中的行数)+(表2中的行数)。
注意:我不是PostGresQL专家,所以我没有机会测试这个查询。

09-04 09:04