我在我的数据库中有一个列(让我们称之为jsn)和json对象(实际上存储为纯文本)。这个json对象看起来像这样:
{“一个”: {“b”:[{“num”:123,…}, { “民”:…
你需要取消数组,然后你可以在结果上应用max():
select max((n.x -> 'num')::int) from the_table t cross join jsonb_array_elements(t.jsn::jsonb -> 'a' -> 'b') as n(x);
你可能想要添加一个 group by ,这样你就可以区分最大值来自哪一行。假设你的表有一列 id 这是独一无二的:
group by
id
select id, max((n.x -> 'num')::int) from the_table t cross join jsonb_array_elements(t.jsn::jsonb -> 'a' -> 'b') as n(x) group by id;