pgAdmin 4(Windows)Join查询报错:列不存在问题求助
问题原因
PostgreSQL 默认会将未用双引号包裹的标识符(列名、表名)转换为小写。你的picker_data_entity表中实际存在的列是驼峰式的bipId,但查询中直接写picker_data_entity.bipId时,会被数据库解析为picker_data_entity.bipid,因此出现「column picker_data_entity.bipid does not exist」的错误。
解决方案
方案1:为驼峰列名添加双引号
需要单独为大小写敏感的列名包裹双引号,注意不要将表名和列名整体包裹(这会被识别为单个标识符)。正确的Join语句如下:
select * from picker_data_entity join bip on bip.id = picker_data_entity."bipId"
方案2:修改列名以符合PostgreSQL规范
如果你有权限修改表结构,建议将驼峰式列名改为全小写并使用下划线分隔(比如bip_id),这是PostgreSQL的常规命名方式,能彻底避免大小写相关的解析问题:
ALTER TABLE picker_data_entity RENAME COLUMN "bipId" TO bip_id; -- 之后即可使用无引号的查询 select * from picker_data_entity join bip on bip.id = picker_data_entity.bip_id;
错误尝试说明
你之前的第二个查询中,将"bip.id"和"picker_data_entity.bipId"用双引号包裹是错误的——这会让数据库认为你在查询名为bip.id和picker_data_entity.bipId的列(而非对应表的列),显然这类列不存在,因此无法正确执行。
内容的提问来源于stack exchange,提问作者Eli
相关产品推荐
相关产品推荐

