我正在使用postgresql。我正在使用psql.i运行命令\ d + user我得到用户表的架构。 但是当我运行命令时,从用户选择first_name。给我错误
ritesh=# select first_name from user;
ERROR: column "first_name" does not exist
LINE 1: select first_name from user;
^
正如您在屏幕截图中看到的。如何解决它以及我误解的地方请解释。
答案 0 :(得分:2)
发生此问题是因为"user" is a keyword。你不应该将它用于表名等。否则你会得到这样的乐趣。
请参阅,user
是一个魔术伪函数,它返回当前用户名 - 它是current_user
的别名:
regress=> SELECT user;
current_user
--------------
testuser
(1 row)
所以你要做的是在一个返回集合的上下文中调用函数user
,并从中获取列first_name
。函数结果没有这样的列,因此出错。
不要只是将您的表格架构限定为public.user
来解决此问题。如果您要对表名使用SQL关键字,至少应该使用带引号的标识符,例如:
select first_name from "user";
但实际上,将表格命名为与关键字不冲突的内容会好得多。
答案 1 :(得分:0)
尝试“从public.user中选择first_name”