首页 > 解决方案 > Postgres错误:使用json字段时列不存在

问题描述

Postgres 版本 11.10

这是我使用 jsonb 字段的 postgres 架构

create table data(
    key       char(32), --md5 
    time      int  NOT NULL,
    output    jsonb NOT NULL,
    PRIMARY KEY (key,time)
) 

这是两个可以正常工作的查询

select distinct on(key) key   from data ORDER BY  key,time DESC
select distinct on(key) key,output   from data ORDER BY  key,time DESC

问题是这个查询

select distinct on(key) key,output-->details   from data ORDER BY  key,time DESC

我不断收到错误

“键”列不存在

知道为什么吗?

标签: postgresqlpostgresql-11

解决方案


--开始一个持续到行尾的注释(请参阅问题中突出显示的语法)。所以有效的查询是

select distinct on(key) key,output

由于它没有FROM子句,因此列引用key会导致错误。

您可能正在寻找->>运营商:

select distinct on(key)
       key,
       output ->> 'details'
from data
ORDER BY  key,time DESC;

推荐阅读