PostgreSQL中如何横向拼接两个无关联关系的数据表?
PostgreSQL 实现无关联表横向拼接方案
要实现类似pandas中pd.concat(axis=1)的无关联表横向按行拼接效果,最简单的方式是通过行号关联实现:
核心思路
由于两张表没有关联字段,我们先给每张表的原有行按顺序生成唯一行号,再通过行号做全外连接,就能保留两张表的所有行,按原有顺序并排拼接,不足的字段位置自动补NULL。
实现代码
WITH t1 AS ( -- 给table_01的每行生成行号 SELECT *, ROW_NUMBER() OVER () AS rn FROM table_01 ), t2 AS ( -- 给table_02的每行生成行号 SELECT *, ROW_NUMBER() OVER () AS rn FROM table_02 ) SELECT column_a, column_b, column_c, column_d FROM t1 FULL OUTER JOIN t2 ON t1.rn = t2.rn -- 保证结果顺序和原表行顺序一致 ORDER BY COALESCE(t1.rn, t2.rn);
效果说明
针对你提供的测试数据,执行上述SQL后:
- 第一行同时展示table_01的第一行数据和table_02的第一行数据
- 第二行仅展示table_01的第二行数据,column_c、column_d字段自动补NULL
完全符合横向拼接无重复数据的需求。
内容的提问来源于stack exchange,提问作者eduardosteps
相关产品推荐
相关产品推荐

