PostgreSql不理解列名
我已经在PostgreSql中创建了表:PostgreSql不理解列名,sql,postgresql,columnname,Sql,Postgresql,Columnname,我已经在PostgreSql中创建了表: DROP TABLE IF EXISTS es_events; CREATE TABLE IF NOT EXISTS es_events ( id SERIAL, name VARCHAR (50) NOT NULL, version INT NOT NULL, data BYTEA NOT NULL ); 现在我尝试从这个表中选择: SELECT COALESCE(MAX(version),0)
DROP TABLE IF EXISTS es_events;
CREATE TABLE IF NOT EXISTS es_events (
id SERIAL,
name VARCHAR (50) NOT NULL,
version INT NOT NULL,
data BYTEA NOT NULL
);
现在我尝试从这个表中选择:
SELECT COALESCE(MAX(version),0)
FROM public.es_events
WHERE name = 'asd';
但结果我收到:
ERROR: column "version" does not exist
LINE 1: SELECT COALESCE(MAX(version),0)
^
HINT: Perhaps you meant to reference the column "es_events. version".
SQL state: 42703
Character: 21
我尝试使用es_事件。版本,但它没有帮助:
ERROR: column "es_events. version" does not exist
LINE 1: SELECT COALESCE(MAX("es_events. version"),0)
^
SQL state: 42703
Character: 21
我做错了什么?如何从表格中选择
# psql --version
psql (PostgreSQL) 13.3 (Debian 13.3-1.pgdg100+1)
根据错误消息,您创建的表中有一个名为version的列,该列有两个前导空格,而不是version 您可以重命名该列:
ALTER TABLE es_events RENAME " version" to version;
“创建表”中有空格,修复表创建后,脚本名称开始正确工作:
CREATE TABLE IF NOT EXISTS es_events (id SERIAL,name VARCHAR (50) NOT NULL,version INT NOT NULL,data BYTEA NOT NULL)
这是一个非常重要的事件。版本似乎表明名称中有隐藏的空格字符。使用select COALEACEMAXES_事件尝试选择。版本,0或选择COALESCEMAX版本,0以确认`.@eshirvana,否错误仅显示发生错误的行。它不包括查询的其余部分,因为它不相关。我尝试使用es_事件。版本而不是版本,结果相同-错误:列es_事件。版本不存在名称中有多个空格。剪切并粘贴错误返回的列名。还要在您的问题中添加psql中\dt es_事件的输出。谢谢!我已经用REATE table IF NOT EXISTS es_事件id SERIAL、名称VARCHAR 50 NOT NULL、版本INT NOT NULL、data BYTEA NOT NULL重新创建了一个表,这很有帮助。但是为什么它以前是用空格创建的呢?如何转义列名?//我在的帮助下创建了表pgAdmin@MaximKitsenko. 使用psql,pgAdmin只是一个不必要的层,它的作用远远大于它的帮助。列名是使用这些引号转义的。我无法说明您创建此列时做了什么。可能在GUI中输入了一个带有两个前导空格的值。