postgresql - 使用 SQL 查询获取第二个最大日期 json 对象
问题描述
我正在尝试从 json 列中获取第二个最大日期 json 数据。
这是 jsonb 列
--------
value
--------
{
"id": "90909",
"records": [
{
"name":"john",
"date": "2016-06-16"
},
{
"name":"kiran",
"date": "2017-06-16"
},
{
"name":"koiy",
"date": "2018-06-16"
}
]
}
如何选择第二个最大日期json对象..
预期输出:-
{
"name":"kiran",
"date": "2017-06-16"
}
如果我们在记录中只有一个对象意味着这将是第二个最大日期
任何建议也会有所帮助..
解决方案
我的主要建议是:如果您的数据是结构化的,请不要将其存储在 JSON 中。如果将其构建为关系表,则使用它会容易得多。
但无论如何,这是获取第二个最新日期对象的一种方法。首先解包数组,然后按日期排序,取倒数第二个:
SELECT obj.*
FROM your_table, jsonb_array_elements(value->'records') obj
ORDER BY obj->'date' DESC
LIMIT 1 OFFSET 1;
value
-----------------------------------------
{"date": "2017-06-16", "name": "kiran"}
(1 row)