postgreSQL选择查询中的完全限定表名

时间:2015-12-08 16:34:25

标签: postgresql

简单的问题,但谷歌在合理的时间内无法提供帮助。 好的,我在 my_db 数据库中有用户表,其中包含 id 列。 我想运行非常简单的查询

SELECT id FROM user;

但它失败了。

  

错误:列" id"不存在LINE 1:SELECT id FROM user;

你能想象吗?

好的,正在运行

SELECT * FROM user;

输出内部postgresql数据库用户列表,这与我的用户无关,它来自另一个[内部]数据库的数据。 但是,已建立与my_db的连接。

2 个答案:

答案 0 :(得分:2)

以下查询可以重写为

SELECT id FROM my_db.public.user;

id 是列, my_db 是数据库,用户是表名,公用 - 是架构。有关模式的更多信息: http://www.postgresql.org/docs/9.1/static/ddl-schemas.html 所以你不必重命名表名。

答案 1 :(得分:1)

user是返回当前登录用户的内部函数(和保留字)。

要将其用作您自己的标识符,您需要引用它:

select id 
from "user" 

select id 
from public."user". 

但是你应该真的避免使用保留字作为表名(或任何需要引用标识符的名称)