我正在使用postgresql 9.3。我有2个表如下:
create table table1 (col1 int, col2 int);
create table table2 (col2 int, col4 int);
insert into table1 values
(1,2),(3,4);
insert into table2 values
(10,11),(30,40),(50,60);
我的预期结果集如下:
COL1 table1_COL2 table2_COL2 COL4
1 2 10 11
3 4 30 40
(null) (null) 50 60
我尝试使用with, join
但未获得预期结果。我不打算加入这两个表。只有我希望结果应该放在一个结果集中,这样我就不需要在数据库中查询2次了。
答案 0 :(得分:1)
[根据OP的要求从评论转到答案]
这样做的最好方法是 - 不要这样做。这是个坏主意。你有两个独立且无关的查询,你应该只运行一个,然后运行另一个。 (如果你真的强烈想要同时运行它们并伪造结果,你可以使用row_number()
然后FULL OUTER JOIN
的子查询。所以你可以。但你不应该。)
答案 1 :(得分:0)
如果你纯粹通过不多次往返数据库进行优化,那么结果可能会更好,结果如下所示。这种结构和查询更好地说明了您实际上正在进行两个不同于预期结果结构的查询,并且必要的查询将说明。
COL1 TABLE1_COL2 TABLE2_COL2 COL4
1 2 (null) (null)
3 4 (null) (null)
(null) (null) 10 11
(null) (null) 30 40
(null) (null) 50 60
SELECT col1
, col2 AS table1_COL2
, NULL AS table2_COL2
, NULL AS col4
FROM table1
UNION ALL
SELECT NULL AS col1
, NULL AS table1_COL2
, col2 AS table2_COL2
, col4 AS col4
FROM table2
答案 2 :(得分:0)
如果您没有提供任何加入条件,您可以这样做。
SELECT table1.col1 AS table1_COL1
, table1.col2 AS table1_COL2
, table2.col1 AS table2_COL3
, table2.col2 AS table2.col4
FROM table1,table2