我想在同一数据库中合并两个表,但不希望在PostgreSQL的相同模式下合并(我使用DBeaver编写脚本),但是在PostgreSQL中合并表的某些示例失败了。
这两个表有很多列和样本,我想从表1中选择AB,从表2中选择wang,从CD中选择E,其中B和C项完全相同,但是所包含的数字并不完全相同。相同。因此,我想合并并获得A(B / C)DE。
我使用了UNION,但显示[42601]:错误:每个UNION查询必须具有相同的列数。当我使用左联接时,它在“。”周围显示错误。 在最后一次尝试我的代码,如: 从table1左联接中选择A table2.D,table2.E使用B = C
答案 0 :(得分:0)
您可以使用这种查询:
表格
create table table1 (
A text,
B int
);
insert into table1 values ('test-a', 123);
create table table2 (
C int,
D text,
E text
);
insert into table2 values (3456, 'test-d', 'test-e');
查询
select A::text, B::text as BC, '' as D, '' as E from table1
union all
select '' as A, C::text as BC, D::text, E::text from table2
结果
a bc d e
test-a 123
3456 test-d test-e
这将获取表1中的所有记录(列A,B,伪列D和伪列E)并添加表2中的记录(虚拟列A,列C,D和E)
示例:https://rextester.com/NWSEP53051
表格
create table table1 (A, B);
insert into table1 values ('test-a', 123);
create table table2 (C, D, E);
insert into table2 values (3456, 'test-d', 'test-e');
查询
select A, B as BC, '' as D, '' as E from table1
union all
select '' as A, C as BC, D, E from table2
结果
| A | BC | D | E |
| ------ | ---- | ------ | ------ |
| test-a | 123 | | |
| | 3456 | test-d | test-e |
答案 1 :(得分:-1)
您可以使用临时表实现合并
https://parksuseong.blogspot.com/2019/07/postgresql-insert-merge-olap.html