You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在pgAdmin中通过连接两张表创建新表时出错求助

问题原因

你执行CREATE TABLE时报错的核心原因是:SELECT c.*, g.*会同时把customer表和geography表中的geographykey字段都包含到结果集里,而创建新表时不允许存在重复的列名,因此触发了column "geographykey" specified more than once的错误。

而之前单纯执行查询语句时能成功,是因为查询结果允许临时存在同名列(只是显示时会出现两个相同列名,但数据库可以返回结果),但创建持久化表时要求列名必须唯一。

解决方案

根据你的需求,有两种常见的处理方式:

方式一:只保留一个geographykey字段

因为两个表的geographykey是关联字段,值是一致的,通常只保留其中一个即可:

  1. 明确指定字段(推荐,更清晰)
    列出geography表中除geographykey外的所有字段,避免重复:

    CREATE TABLE customer_geo AS
    SELECT 
        c.*, 
        g.city, g.region, g.country  -- 替换成geography表实际需要的字段,排除geographykey
    FROM customer AS c
    LEFT JOIN geography AS g
    ON c.geographykey = g.geographykey;
    
  2. 用排除法快速过滤重复字段(仅PostgreSQL支持)
    如果不想逐个列出字段,可以用EXCLUDE关键字排除重复的geographykey:

    CREATE TABLE customer_geo AS
    SELECT 
        c.*, 
        g.* EXCLUDE (geographykey)
    FROM customer AS c
    LEFT JOIN geography AS g
    ON c.geographykey = g.geographykey;
    

方式二:保留两个字段但重命名其中一个

如果确实需要保留两个表的geographykey(比如排查关联问题),可以给其中一个字段重命名:

CREATE TABLE customer_geo AS
SELECT 
    c.*, 
    g.geographykey AS geo_geographykey,  -- 给重复字段起新名字
    g.city, g.region, g.country  -- 其他需要的字段
FROM customer AS c
LEFT JOIN geography AS g
ON c.geographykey = g.geographykey;

内容的提问来源于stack exchange,提问作者sowparnika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:08:13