PostgreSQL关联查询提示列不存在但列实际存在的问题
问题解决:PostgreSQL JOIN时提示“列不存在”
错误原因
你写的"Users.UserID"和"Profiles.UserID"是错误的标识符写法:在PostgreSQL中,双引号会将包裹的整个字符串视为单个列名,而非表名.列名的组合。数据库找不到名为Users.UserID的列,因此报错。
正确查询语句
如果表/列名是大小写敏感的(创建时用双引号指定了大小写),需把表名和列名分别用双引号包裹:
SELECT * FROM "Users" INNER JOIN "Profiles" ON "Users"."UserID" = "Profiles"."UserID";
若表名和列名均为小写(PostgreSQL默认不区分大小写,除非创建时显式加双引号),也可以省略双引号:
SELECT * FROM Users INNER JOIN Profiles ON Users.UserID = Profiles.UserID;
验证说明
你之前执行SELECT "UserID" FROM "Users";能成功,是因为双引号仅包裹了列名UserID,数据库可以正确识别Users表下的该列。而JOIN时错误地将表名和列名合并在一个双引号内,导致标识符解析错误。
内容的提问来源于stack exchange,提问作者logos.agbeko
相关产品推荐
相关产品推荐

