gpt4 book ai didi

postgresql - 如何从 jsonb postgresql 获取按键值排序的所有键

转载 作者:行者123 更新时间:2023-11-29 13:40:23 25 4
gpt4 key购买 nike

如何从 json 中获取所有键值排序的它自己的键值例如:key 是一个像 uuid 一样的数字,value 是日期

我已经这样做了,但没有订购:

CREATE TABLE IF NOT EXISTS products
(
id text UNIQUE NOT NULL
CONSTRAINT crm_id_pkey PRIMARY KEY,
materials jsonb
);
select 
jsonb_object_keys(materials) as key,
from
products
WHERE
id = '5'

所以我需要键的结果表,通过比较它们自己的日期(值)排序,例如:

select 
jsonb_object_keys(materials) as key,
from
products
WHERE
id = '5'
ORDERED BY KEY.GETVALUE()

但是 postgres 中不存在按 key.getValue() 函数排序的函数,如果可能的话,我该如何进行排序?

更新:我发现另一种解决方案不是更好,但它也有效:

select jsonb_object_keys(materials) as keys,
materials -> jsonb_object_keys(materials) as date
from client_material
WHERE crm_id = '5'
order by date DESC;

最佳答案

示例数据:

insert into products values
('5', '{"k1": "2019-05-01", "k2": "2019-04-01"}');

在横向连接中使用 jsonb_object_keys(materials),这样您就可以在 order by 子句中使用结果键:

select key
from products
cross join jsonb_object_keys(materials) as key
where id = '5'
order by (materials->>key)::date;

key
-----
k2
k1
(2 rows)

Working example in rextester.

关于postgresql - 如何从 jsonb postgresql 获取按键值排序的所有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56297532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com