首页 > 解决方案 > 在两个表上进行联合,但重命名 postgres 中可能具有相同名称的列并删除其他列

问题描述

我正在对两个具有相同列名的表进行联合。所以,假设它们看起来像这样:

table1
=========
_id
fk_id
name
details
createdAt
updatedAt

table2
=========
_id
fk_id
name
age
details
createdAt
updatedAt

这是我目前正在做的事情:

SELECT * FROM "table1"
    JOIN table2
    ON table1."fk_id"=table2."fk_id";

目前我显然得到了重复的列。所以这就是我想要做的:

1- table2 的列namedetails,我想分别重命名为t1_namet2_details

2- 我想删除 table2 的、_idfk_id属性。我怎么做?createdAtupdatedAt

标签: sqlpostgresqljoinunion

解决方案


只需枚举您要保留的列,并根据需要为它们设置别名:

select
    t1._id,
    t1.fk_id,
    t1.name t1_name,
    t1.details t1_details,
    t1.createdAt,
    t1.updatedAt,
    t2.name t2_name,
    t2.age,
    t2.details t2_details
from table1 t1
inner join table2 t2 on t1.fk_id = t2.fk_id

推荐阅读