【问题标题】:Column not found in postgres [duplicate]在 postgres 中找不到列[重复]
【发布时间】:2021-11-16 18:24:34
【问题描述】:

我正在尝试使用它们的共同点将两个表连接在一起,但我一直在找不到特定的列,我可以清楚地看到该列在那里。

这是我的脚本:

SELECT "productId", "unitId", SUM(quantity) 
    FROM consumable_pack_item INNER JOIN product ON consumable_pack_item.productId = product.id 
        GROUP BY "productId", "unitId"; 

错误:

ERROR:  column consumable_pack_item.productid does not exist
LINE 2:  FROM consumable_pack_item INNER JOIN product ON consumable_...
                                                         ^
HINT:  Perhaps you meant to reference the column "consumable_pack_item.productId".
SQL state: 42703
Character: 95

【问题讨论】:

  • 这是一个常见问题解答。请在考虑发布之前阅读手册和谷歌任何错误消息和许多清晰、简洁和准确的问题/问题/目标的措辞,带有和不带有您的特定名称/字符串/数字、“site:stackoverflow.com”和标签;阅读许多答案。反映你的研究。请参阅How to AskHelp center 和投票箭头鼠标悬停文本。如果您发布问题,请使用一个措辞作为标题。

标签: sql postgresql join foreign-keys


【解决方案1】:

您需要知道"productId"productId 不是一回事。您使用双引号将第一个定义为区分大小写。

通常,在定义列和表时应避免使用双引号。您已经犯下了这种违法行为,因此您需要在引用列的任何地方继续使用双引号:

SELECT cpi."productId", "unitId", SUM(quantity) 
FROM consumable_pack_item cpi INNER JOIN
     product p
     ON cpi."productId" = p.id 
GROUP BY cpi."productId", "unitId"; 

请注意,我添加了表别名,因此查询更易于编写和阅读。我也开始限定列名。如果您有多个表引用,我强烈建议您将查询中的所有列名限定为一个好习惯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多