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

PostgreSQL关联两个表更新table1价格时报列不存在错误如何解决

错误原因

PostgreSQL对标识符(列名、表名等)的解析规则是:如果不使用双引号包裹,会自动将所有标识符转为小写,同时将空格、括号等特殊符号识别为语法分隔符而非标识符的一部分。
你代码中的列名Name (IS)包含空格和括号,直接写table2.Name (IS)时,PostgreSQL会将其解析为调用table2.name列作为函数、传入IS参数的逻辑,自然找不到匹配的列,就会抛出Column does not exist error错误。

解决方法

对包含特殊字符、大小写混合的标识符,必须用双引号包裹,强制PostgreSQL按照原始字符完整匹配标识符,修正后的SQL如下:

UPDATE table1
SET "Price" = table2."Price"
FROM table2
WHERE table2."Name (IS)" = table1."Name (IS)";

注意如果你的Price列建表时也是用混合大小写定义的,同样需要用双引号包裹,避免PostgreSQL自动转小写后匹配不到列。后续所有涉及Name (IS)这类特殊列名的操作,都需要用双引号包裹完整列名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:15:07